Spring 用注解Annotation注入 abstract 抽象父类的属性
问题:
希望把子类公共的属性放在抽象类中。运行时,希望在Spring 扫描@Component注解,自动加载子类的同时,自动注入抽象父类的属性。
抽象父类:
@Component public abstract class BaseCar { @Autowired Settings settings; }
子类:
@Component public class SportsCar extends BaseCar{ public void print(){ //运行时报空指针异常,说明settings并没有通过@Autowired加载 System.out.print(settings.getSpeed()); } }
运行时报空指针异常,说明子类中,super.settings并没有通过@Autowired加载
原因是 Spring Ioc 注入的对象是实例,而不是类。
实例化子类的时候,抽象父类不可能实例化,所以属性 settings 并没有自动加载。 解决办法:
父类:
public abstract class BaseCar { Settings settings; }
子类:
@Component public class SportsCar extends BaseCar{ //Autowired修饰方法时,根据方法参数类型判断实例化哪个类 @Autowired public void haha(Settings settings){ super.settings=settings;//父类属性注入 } public void print(){ System.out.print(settings.getSpeed()); } }
测试类:
@Component public class Test { @Autowired SportsCar sportsCar ; @PostConstrust public void test(){ sportsCar.print();// 成功输出。abstract类的属性自动注入成功。 } }
参考文献:
[1] Kshitiz Sharma. http://stackoverflow.com/questions/16733509/proper-way-to-inject-parent-class-dependencies-with-spring-annotations May 24, 2013.
Spring 用注解Annotation注入 abstract 抽象父类的属性相关推荐
- (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以 ...
- Spring 基于注解(annotation)的配置之@Autowired注解
Setter 方法中的 @Autowired 当 Spring遇到一个在 setter 方法中使用的 @Autowired 注解,它会试图执行 byType 自动连接.换言之,加了@Autowired ...
- Spring 基于注解(annotation)的配置之@Required注解
从 Spring 2.5 开始就可以使用注解来配置依赖注入.注解连线在默认情况下在 Spring 容器中不打开.因此,在可以使用基于注解的连线之前,我们将需要在我们的 Spring 配置文件中启用它: ...
- Spring 基于注解(annotation)的配置之@Qualifier注解
使用@Qualifier可以分别为同样类型的Bean分别注入不同的依赖值.看个例子: Student.java: package com.sap;public class Student {priva ...
- (spring-第4回【IoC基础篇】)spring基于注解的配置
(spring-第4回[IoC基础篇])spring基于注解的配置 基于XML的bean属性配置:bean的定义信息与bean的实现类是分离的. 基于注解的配置:bean的定义信息是通过在bean实现 ...
- spring beans源码解读之--Bean的注解(annotation)
随着spring注解的引入,越来越多的开发者开始使用注解,这篇文章将对注解的机制进行串联式的讲解,不求深入透彻,但求串起spring beans注解的珍珠,展示给大家. 1. spring beans ...
- Spring注解Annotation
1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: Java代码 public class UserManagerImpl implements Use ...
- Spring使用注解配置依赖注入
大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单.不过类似于数据源对象这种配置信息容易变更的对象除外,这种对象使用xml文件来进行配置会更适合,方便于 ...
- 【Spring学习】spring注解自动注入bean
Spring mvc注解用到的配置: <!-- 启用spring mvc 注解 --> <context:annotation-config /> <context:co ...
最新文章
- nova hypervisor接口添加host_ip字段
- 【C++】运算符重载
- Windows XP字体模糊
- 图机器学习中的数据增强技术
- mysql 分区表详解
- 【js】JavaScript parser实现浅析
- Pytest Hooks方法之pytest_collection_modifyitems改变测试用例执行顺序
- oracle 静默安装出错,关于redhat6.2静默安装oracle11g出现的问题 大神救命
- python中int对象不可调用_'int'对象在python中不可调用
- How to Prevent the next Heartbleed
- EasyUI ComboBox应用示例
- 计算机科学导论_[计算机科学导论]第一章:计算机学什么
- Ubuntu挑战绿坝
- 【HUST】网安|编译原理实验|实验四攻略
- HTML+CSS实现导航条及下拉菜单1
- 贵州安顺:红色基因激活初心密码 为民服务谱写秀丽篇章
- Nginx报错 nginx: [error] invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“
- 打工人最怕听到的词是团建
- 量子信息与量子计算_我们会看到量子计算革命吗?
- Fedora安装MySQL
热门文章
- 史上最全的Linux常用——目录和文件管理命令——收藏这一篇就够了!(超全,超详细)
- ajax servlet设置响应,在jquery的请求ajax与在servlet中的响应ajax
- php5.5 集成环境,windows下配置php5.5开发环境及开发扩展_PHP
- 网上预约挂号系统代码_速看!全国民族运动会部分竞赛项目观众网上预约系统正式上线了...
- oracle查看数据库剩余空间,Oracle 查看数据库空间使用情况
- asp.net mysql打包_Asp.net与SQL一起打包部署安装
- android 获取蓝牙设备id_不需要任何权限获得Android设备的唯一ID
- java异常统一处理,Controller层的异常统一处理及返回
- oracle 慕课课程_“慕课”在Oracle数据库课程中的应用探讨
- Flask的forms类