spring实例化bean的三种方式,调用spring bean方法出错
目录
弹簧中实例化豆无效行为中代码如下应用程序上下文。可扩展标记语言中配置如下弹簧实例化豆顺序问题,导致注入失败问题如下原因解决
spring中实例化bean无效
在做支柱2和弹簧整合时遇到弹簧实例化无效的情况,
Action中代码如下
公共类实现扩展操作支持{ @ Resource private UserService UserService;公共字符串execute(){//userservice。保存用户(new Object());系统。出去。println(用户服务);系统。出去。println(支柱2弹簧整合成功);返回"成功";}}
applicationContext.xml中配置如下
?可扩展标记语言版本=1.0 编码=UTF八号?豆子xmlns= http://www。spring框架。org/schema/beans xmlns : xsi= http://www。w3。org/2001/XML schema-instance xmlns : context= http://www。spring框架。 xmlns : tx= http://www。spring框架。 xsi 3360架构位置= http://www。春天-自动扫描与装配bean-context :组件-扫描基本包= com。bjwl /context :组件-扫描/bean通过注解实例化户服务时一直得到的是零。最后经过查找,发现没有导入Struts2-Spring-plugin.jar的原因。
spring实例化bean顺序问题,导致注入失败
我们可以通过弹簧进行非常方便的管理豆子,只需要在类上面加一个注解就可以进行豆的注入,也就是所谓的迪。今天碰到了个小问题,来总结一下。
问题如下
公共抽象类test bean { public String strpublic test bean(){ this。str=initStr();}保护的抽象字符串initStr();}公共类特森扩展TestBean { @Resource公共字符串str@ Override受保护的字符串initStr(){ return this。str}}但是发现这个潜艇用热中子反应堆(海底热反应堆的缩写)始终是零。
原因
在实例化测试豆的时候不能确认潜艇用热中子反应堆(海底热反应堆的缩写)已经实例化,所以是先建立对象,再进行注入潜艇用热中子反应堆(海底热反应堆的缩写)的值。那么创建对象的时候,根据构造方法创建的对象中,还没有注入潜艇用热中子反应堆(海底热反应堆的缩写)的值,所以只能为零。
解决
我们需要确认在潜艇用热中子反应堆(海底热反应堆的缩写)已经注入进来的情况下再对父类中的潜艇用热中子反应堆(海底热反应堆的缩写)赋值,那么这个时候需要子类实现回调接口这个接口,实现其中的afterPropertiesSet()
公共类特森扩展测试豆实现正在初始化Bean{ @Resource公共字符串str@ Override受保护的字符串initStr(){ return this。str} @覆盖public void afterPropertiesSet()抛出异常{超级。str=这个。str}}问题成功解决。注入成功
以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。