spring中@Autowired注解失效的原因分析

spring中,类的成员变量如果使用了@Autowired,这个类必须交给Spring管理,否则注解失效.


原因: spring后置处理器解析此注解,对Bean做增强


交给Spring管理的方式:

  1)  xml中配置对应的Bean标签
  2)  @Component,@Service,@Controller,@Repository等
  3)  启动类或其他配置类,使用@Bean注解

2和3的区别:

  @Bean没有和类的定义绑定,通过方法返回对象,可以进行属性赋值,可以配置没有源码的第三方组件
  @Component系列是直接贴在类上的,与类的定义绑定在一起,组件扫描和自动装配更方便


注意: 需要最终引用类是交给Spring管理的,如果当前类B中@Autowired注入了类C,并通过@Component交给Spring管理,但类A在使用类B时,是new出来的,依然是无效的.

posted @ 2020-04-16 17:35  念欲似毒  阅读(5379)  评论(0编辑  收藏  举报