Spring 父类注入的属性 在子类中调用为null

来源:互联网 发布:刷会员的软件 编辑:程序博客网 时间:2024/05/01 14:51

在spring中注入属性的目标是实例而不是类

子类从父类继承的值是与实例无关的 所以子类的属性并没有被赋值


工作背景:

有一个BaseService 有3个Dao成员 DaoA DaoB DaoC

并且 spring 为这3个成员分别注入了值 这三个Dao是直接可以拿过来执行数据库访问的

但是有一个BaseService的子类 xxx 

也是拿来执行数据库访问的 

表面上 它可以正常的使用 DaoA DaoB 

这让我产生了误解,以为这些是从父类拿过来的

但是 需求需要xxx去使用DaoC来访问数据库

结果一直报空指针异常 困惑了很久

最后发现 xxx之所以能使用DaoA DaoB 是因为spring配置文件中也其DaoA DaoB 注了值

而与父类的DaoA DaoB DaoC是没有关系的

xxx的DaoC没有被注值 拿过来用的时候就一直是默认的null 所以一直报空指针异常


spring基于setter的注入,是在bean被创建之后再做的。而在创建的同时,调用了initParams();
这个方法中又涉及到还未注入的属性.所以抛出空指针了

因为基类调用构造函数的时候,spring还没注入

阅读全文
0 0
原创粉丝点击