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出来的,依然是无效的.