关于Spring的依赖注入问题

今日敲代码遇到个关于spring依赖注入的问题 , 所以来记录一下

     

当程序启动时,web容器会加载spring的配置文件 applicationContext.xml,因为xml文件中配置了 默认包的扫描路径  <context:component-scan base-package="xxxx"> </context:component-scan>,所以此时spring会扫描所有的bean 以及通过注解产生的bean,并通过设置注入或者构造注入来注入该属性的值。


比如一个用于分页的bean,

<pre name="code" class="java">pubic class PageList{
     private JpaTemplate;
     
     public void setJpaTemplate(JpaTe  mplate jpaTemplate) {
		this.jpaTemplate = jpaTemplate;
                System.out.print(this.jpaTemplate);
	}

}


 applicationContext.xml关于PageList的配置如下: 

<bean id="pageList" class="com.taoyuan.core.tools.PageList">
	<property name="jpaTemplate" ref="jpaTemplate"/>
</bean>
jpaTemplate和emtityManageFactory均以配置好,这里就不列出来了。


程序启动时做的是:扫描到pageList这个bean,并将jpaTemplate注入给pageList,此时在setter方法中输出jpaTemplate对象是已经实例化了的。。

但是如果你在Controller中重新new PageList();这时的jpaTemplate的值为null,程序用到jpaTemplate的地方则报空指针异常,因为这个pageList是重新new的,spring没有为这个pageList注入jpaTemplate。


解决办法:

在需要用到pageList的Controller中,也用依赖注入的方式来注入pageList.,如:

@Resource(name="pageList")
public PageList pageList;
那么当程序运行时,当扫描model时spring为pageList注入了jpaTemplate,当扫描到Controller时,spring为Controller注入了pageList( 此时的pageList已经被实例化),所以就不会产生 空指针异常 。


这是今日的心得,忘指正。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值