Spring-四種常用註解
四種註解:
用於建立物件的:
他們的作用就和在xml配置檔案中編寫一個
@Component
:
作用:用於把當前類物件存入spring容器中
屬性:
value:用於指定bean的id,當我們不寫時,它的預設值時當前型別,且首字母改小寫
@Controller
:一般用在表現層
@Service
: 一般用在業務層
@Repository
: 一般用在持久層
以上三個註解他們的作用和屬性與@Component
完全相同
他們三個是spring框架為我們提供明確的三層使用的註解,使我們的三層物件更加清晰
用於注入資料的
他們的作用就和在xml配置檔案中的bean標籤中寫一個
@Autowired
:
作用:自動按照型別注入。只要容器中有唯一的一個bean物件型別和要注入的變數型別匹配,就可以注入成功
如果IOC容器中沒有任何bean型別和要注入的變數型別匹配,則報錯。
如果IOC容器中有多個型別匹配時:先匹配IOC 容器中 value值找到物件,若多個進行注入,根據變數名來尋找對應的 key 進行注入,若不存在則報錯
出現位置:
可以是變數上,也可以是方法上
細節:
在使用註解注入時,set方法不是必須的
@Qualifier
:
作用:在按照類中注入的基礎之上再按照名稱注入。它在給類成員注入時不能單獨使用(要與@Autowired一起使用),但是在給方法引數注入時可以
屬性:
value:用於指定注入 bean 的 id
@Resource
(java.xml.ws.annotation) :
作用:直接按照 bean 的 id 注入,可以單獨使用
屬性:
name: 用於指定 bean 的 id
以上三個注入都只能注入其他bean型別,而基本資料型別和String型別無法使用上述註解實現
另外,集合型別只能通過 xml 來實現
@Value
作用:用於注入基本資料型別和String型別
屬性:
value:用於指定資料的值,它可以使用spring中的SpEL(也就是spring 的 el 表示式)
SpEL的寫法: ${表示式}
用於改變作用範圍的
他們的作用就和在bean標籤中使用 scope屬性實現的功能一樣
@Scope
:
作用:用於指定 bean 的作用範圍
屬性:
value:指定範圍的取值。常用取值:singleton,prototype
與生命週期相關
他們的作用就和在bean標籤中使用init-method 和 destroy-method的作用相同
@PreDestroy
作用:用於指定銷燬方法
@PostConstruct
作用:用於指定初始化方法
注: @PreDestroy
和 @PostConstruct
註解位於 java.xml.ws.annotation包是Java EE的模組的一部分。J2EE已經在Java 9中被棄用,並且計劃在Java 11中刪除它。