博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring实例化bean顺序问题,导致注入失败
阅读量:6880 次
发布时间:2019-06-26

本文共 943 字,大约阅读时间需要 3 分钟。

我们可以通过Spring进行非常方便的管理bean,只需要在类上面加一个注解就可以进行bean的注入,也就是所谓的DI。今天碰到了个小问题,来总结一下。

问题如下:

public abstract class TestBean {    public String str;        public TestBean(){        this.str = initStr();    }        protected abstract String initStr();}public class TestSon extends TestBean {    @Resource    public String str;    @Override    protected String initStr() {        return this.str;    }}

但是发现这个str始终是null。

原因:在实例化TestBean的时候不能确认str已经实例化,所以是先建立对象,再进行注入str的值。那么创建对象的时候,根据构造方法创建的对象中,还没有注入str的值,所以只能为null。

解决:我们需要确认在str已经注入进来的情况下再对父类中的str赋值,那么这个时候需要子类实现 InitializingBean 这个接口,实现其中的afterPropertiesSet()

public class TestSon extends TestBean implements InitializingBean{    @Resource    public String str;    @Override    protected String initStr() {        return this.str;    }    @Override    public void afterPropertiesSet() throws Exception {        super.str = this.str;    }}

问题成功解决。注入成功

转载于:https://www.cnblogs.com/leemumu/p/7507907.html

你可能感兴趣的文章
复杂系统是如何崩溃的 - 翻译
查看>>
Linux基础笔记vi
查看>>
10-利用思维导图梳理JavaSE-Java 集合
查看>>
在线图片翻转、旋转工具
查看>>
jquery利用sort方法对json数据排序
查看>>
要复习内容
查看>>
【Qt笔记】使用流处理 XML
查看>>
指针的使用
查看>>
5-pandas基础运算
查看>>
php判断IP跳转区域二级域名
查看>>
百度webupload--上传图片功能---插件使用
查看>>
Java深、浅克隆(clone)
查看>>
如何在View上不用UIImageView重新绘制一张图片?
查看>>
实现控制器(Controller)
查看>>
好多年前写的一个C++事件回调工具
查看>>
python3使用logging日志记录
查看>>
servlet3中jar的web资源携带
查看>>
3D打印将对零售模式产生颠覆影响,能否抓住机遇
查看>>
不用加减乘除实现加法
查看>>
Android SD卡 文件或目录拷贝、复制、粘贴
查看>>