问题:

希望把子类公共的属性放在抽象类中。运行时,希望在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 抽象父类的属性相关推荐

  1. (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义

    1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以 ...

  2. Spring 基于注解(annotation)的配置之@Autowired注解

    Setter 方法中的 @Autowired 当 Spring遇到一个在 setter 方法中使用的 @Autowired 注解,它会试图执行 byType 自动连接.换言之,加了@Autowired ...

  3. Spring 基于注解(annotation)的配置之@Required注解

    从 Spring 2.5 开始就可以使用注解来配置依赖注入.注解连线在默认情况下在 Spring 容器中不打开.因此,在可以使用基于注解的连线之前,我们将需要在我们的 Spring 配置文件中启用它: ...

  4. Spring 基于注解(annotation)的配置之@Qualifier注解

    使用@Qualifier可以分别为同样类型的Bean分别注入不同的依赖值.看个例子: Student.java: package com.sap;public class Student {priva ...

  5. (spring-第4回【IoC基础篇】)spring基于注解的配置

    (spring-第4回[IoC基础篇])spring基于注解的配置 基于XML的bean属性配置:bean的定义信息与bean的实现类是分离的. 基于注解的配置:bean的定义信息是通过在bean实现 ...

  6. spring beans源码解读之--Bean的注解(annotation)

    随着spring注解的引入,越来越多的开发者开始使用注解,这篇文章将对注解的机制进行串联式的讲解,不求深入透彻,但求串起spring beans注解的珍珠,展示给大家. 1. spring beans ...

  7. Spring注解Annotation

    1. 使用Spring注解来注入属性  1.1. 使用注解以前我们是怎样注入属性的  类的实现: Java代码  public class UserManagerImpl implements Use ...

  8. Spring使用注解配置依赖注入

    大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单.不过类似于数据源对象这种配置信息容易变更的对象除外,这种对象使用xml文件来进行配置会更适合,方便于 ...

  9. 【Spring学习】spring注解自动注入bean

    Spring mvc注解用到的配置: <!-- 启用spring mvc 注解 --> <context:annotation-config /> <context:co ...

最新文章

  1. nova hypervisor接口添加host_ip字段
  2. 【C++】运算符重载
  3. Windows XP字体模糊
  4. 图机器学习中的数据增强技术
  5. mysql 分区表详解
  6. 【js】JavaScript parser实现浅析
  7. Pytest Hooks方法之pytest_collection_modifyitems改变测试用例执行顺序
  8. oracle 静默安装出错,关于redhat6.2静默安装oracle11g出现的问题 大神救命
  9. python中int对象不可调用_'int'对象在python中不可调用
  10. How to Prevent the next Heartbleed
  11. EasyUI ComboBox应用示例
  12. 计算机科学导论_[计算机科学导论]第一章:计算机学什么
  13. Ubuntu挑战绿坝
  14. 【HUST】网安|编译原理实验|实验四攻略
  15. HTML+CSS实现导航条及下拉菜单1
  16. 贵州安顺:红色基因激活初心密码 为民服务谱写秀丽篇章
  17. Nginx报错 nginx: [error] invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“
  18. 打工人最怕听到的词是团建
  19. 量子信息与量子计算_我们会看到量子计算革命吗?
  20. Fedora安装MySQL

热门文章

  1. 史上最全的Linux常用——目录和文件管理命令——收藏这一篇就够了!(超全,超详细)
  2. ajax servlet设置响应,在jquery的请求ajax与在servlet中的响应ajax
  3. php5.5 集成环境,windows下配置php5.5开发环境及开发扩展_PHP
  4. 网上预约挂号系统代码_速看!全国民族运动会部分竞赛项目观众网上预约系统正式上线了...
  5. oracle查看数据库剩余空间,Oracle 查看数据库空间使用情况
  6. asp.net mysql打包_Asp.net与SQL一起打包部署安装
  7. android 获取蓝牙设备id_不需要任何权限获得Android设备的唯一ID
  8. java异常统一处理,Controller层的异常统一处理及返回
  9. oracle 慕课课程_“慕课”在Oracle数据库课程中的应用探讨
  10. Flask的forms类