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

文章如标题具体如下

比如现在有一个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;
	
	@Resource
	public 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配置文件夹这里就不在说。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值