在spring 中如果使用new创建一个对象时 这个对象将不在受spring管理器管理

来源:互联网 发布:java第三方登录 编辑:程序博客网 时间:2024/05/16 06:42

文章如标题具体如下

比如现在有一个service 层

package com.zyc.service.impl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.zyc.dao.Data1Dao;import com.zyc.service.Data1;import com.zyc.util.DynamicDataSource;@Service("data1")public class Data1Impl implements Data1  {public Data1Dao data1Dao;@Resourcepublic void setData1Dao(Data1Dao data1Dao) {this.data1Dao = data1Dao;}    public void deleteUser(String name) {    data1Dao.deleteUser(name); //此处将会包空指针错误    if(5/0==5){        }    }}

初始化容器

package com.zyc;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.zyc.service.Data1;import com.zyc.service.impl.Data1Impl;public class MainClass2 {public static void main(String[] args)  {ApplicationContext context = new ClassPathXmlApplicationContext("spring-applicationContext.xml");//Data1 data1= (Data1) context.getBean("data1"); 此处注释获得对象通过下面new 的方式Data1 data1=new Data1Impl();data1.deleteUser("zhao");}}

要修改这种错误

第一种方式  通过spring 注入对象 及

Data1 data1=new Data1Impl();改为 Data1 data1= (Data1) context.getBean("data1"); 通过spring 注入对象的方式有很多种这里就不在列举只是随便说一种举列子
第二种方式 通过静态变量及

public Data1Dao data1Dao;改为 @Resource("data1Dao")public static Data1Dao data1Dao;当然通过属性方法的哪个注入就不要了 如果还想用属性方法注入可以修改如下    @Resource    public  void setData1Dao(Data1Dao data1Dao) {        Data1Impl.data1Dao = data1Dao;    }

 
spring配置文件夹这里就不在说。


0 0
原创粉丝点击