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
層是業務邏輯層注解,這個注解只是標注該類處於業務邏輯層。