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