1、@Resource註解和@Autowired的區別 @Autowired註解:是按類型裝配依賴對象,預設情況下它要求依賴對象必須存在,如果允許null值,可以設置它required屬性為false。 @Resource註解:和@Autowired一樣,也可以標註在欄位或屬性的setter方法上, ...
1、@Resource註解和@Autowired的區別
@Autowired註解:是按類型裝配依賴對象,預設情況下它要求依賴對象必須存在,如果允許null值,可以設置它required屬性為false。
@Resource註解:和@Autowired一樣,也可以標註在欄位或屬性的setter方法上,但它預設按名稱裝配。名稱可以通過@Resource的name屬性指定,如果沒有指定name屬性,當註解標註在欄位上,即預設取欄位的名稱作為bean名稱尋找依賴對象,當註解標註在屬性的setter方法上,即預設取屬性名作為bean名稱尋找依賴對象。
簡單點說,就是:@Resources按名字,是JDK的;@Autowired按類型,是Spring的。
2、@Component, @Repository, @Service,@Component, @Repository, @Service的區別
註解 | 含義 |
---|---|
@Component | 最普通的組件,可以被註入到spring容器進行管理 |
@Repository | 作用於持久層 |
@Service | 作用於業務邏輯層 |
@Controller | 作用於表現層(spring-mvc的註解) |
@Component
, @Service
, @Controller
, @Repository
是spring註解,註解後可以被spring框架所掃描並註入到spring容器來進行管理@Component
是通用註解,其他三個註解是這個註解的拓展,並且具有了特定的功能@Repository
註解在持久層中,具有將資料庫操作拋出的原生異常翻譯轉化為spring的持久層異常的功能。@Controller
層是spring-mvc的註解,具有將請求進行轉發,重定向的功能。@Service
層是業務邏輯層註解,這個註解只是標註該類處於業務邏輯層。