版权声明:本文为博主原创文章,欢迎转载,转载请注明作者 https://blog.csdn.net/iamlake/article/details/73558868
在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还没注入