- 參照之前xml方式的註解,可以大致如下:
- 用於創建對象bean的
- 用於注入數據的
- 用於改變作用域的
- 聲明週期相關的
- 用於創建對象bean的:
- @Component:創建當前對象的bean,未指定bean id時,默認爲類名首字母小寫
- @Component(“accountService”)
- @Controller:表現層
- @Service:業務邏輯層
- @Repository:持久層
注意:Controller、Service、Repository三者作用一樣,只是爲了更好的描述三層關係 - @Component-scan:指定掃描路徑,相當於xml中:<context:component-scan base-package=“anotation1”/>
- @Component:創建當前對象的bean,未指定bean id時,默認爲類名首字母小寫
-
用於注入數據的:
- @Autowired:
- 按照類型注入
- 作用於變量(可以是接口類,有對應的實現bean即可)、方法上
- 注入策略:
- 首先:根據類型判斷(接口滿足也可),
- 無匹配:失敗退出
- 有唯一bean:注入成功
- 有多個bean:繼續匹配
- 其次:多個bean時,再按照變量名是否等於bean id,匹配則成功,否則異常退出
- 首先:根據類型判斷(接口滿足也可),
- @Qualifier:
- value:限定注入名稱:@Qualifier(“accountDao”)
- @Resource:
- Value:直接指定bean id注入
- @Value:
- 注入基本類型、String
- 語法:直接寫入值,也可以是spel語法:${表達式}
- @Autowired:
-
注意事項:
- 變量注入時:@Qualifier不能單獨使用,需要配合@Autowired
- 方法注入時:@Qualifier可以單獨使用
- @Autowire、@Qualifier、@Reousrce:只能注入bean,不能注入變量
- 集合類型的:只能通過xml方式注入
- 用於改變作用域的
- @Scope:
- Value:5個閾值,常用的就是singleton、prototype
- @Scope:
- 聲明週期相關的
- @PreDestroy:指定銷燬方法
- @PostConstruct:指定初始化方法
這2個方法,就是xml中的init-method、destory-method