1. 程式人生 > >Spring常見註解總結 總結

Spring常見註解總結 總結

接觸了公司的專案程式碼後發現,現在基本上用SSM框架的都是全註解注入開發,之前自學SSM時做的小專案都是XML配置注入。maven都用了,還不用註解?開發效率太低嘍。

關於註解開發的好處可以參考介個連結。https://blog.csdn.net/wxw520zdh/article/details/52733667

所以最近學習了註解開發,下面是我整理的一些內容。
1.定義Bean的註解

@Repository、@Service、@Controller 這幾個是一種型別,其實@Component 跟他們也是一個型別的

Spring 2.5 中除了提供 @Component 註釋外,還定義了幾個擁有特殊語義的註釋。
@Service用於標註業務層元件(我們通常定義的service層就用這個)

@Controller用於標註控制層元件(如struts中的action,spring中的controller)

@Repository用於標註資料訪問元件,即dao層

@Component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。
這幾個註解是當你需要定義某個類為一個bean,則在這個類的類名前一行使用@Service("XXX"),就相當於表示這個類定義為一個bean,bean名稱為XXX; 這幾個是基於類的。

我們可以定義名稱,也可以不定義,不定義會預設以類名為bean的名稱(類首字母小寫)。

 

2.自動裝配bean的型別

@Resource、@Autowired、@Qualifier

當需要在某個類中定義一個屬性,並且該屬性是一個已存在的bean,要為該屬性賦值我們就會用到三個。
@Resource的作用相當於@Autowired,只不過@Autowired按byType自動注入,而@Resource預設按 byName自動注入罷了。@Resource有兩個屬性是比較重要的,分是name和type,Spring將@Resource註解的name屬性解析為bean的名字,而type屬性則解析為bean的型別。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。

@Autowired//預設按type注入
@Qualifier("cusInfoService")//一般作為@Autowired()的修飾用
@Resource(name="cusInfoService")//預設按name注入,可以通過name和type屬性進行選擇性注入

一般@Autowired和@Qualifier一起用,@Resource單獨用。

當然沒有衝突的話@Autowired也可以單獨用

[email protected]  (Spring提供的)

預設按型別匹配,自動裝配(Spring提供的),可以寫在成員屬性上,或寫在setter方法上

@Autowired(required=true)  

一定要找到匹配的Bean,否則拋異常。 預設值就是true 

@Autowired

@Qualifier("bean的名字") 

按名稱裝配Bean,與@Autowired組合使用,解決按型別匹配找到多個Bean問題。

其實spring開發註解,最常用的還是根據名稱。根據型別和構造方法用的非常少。所以在多個實現的時候我們定義bean的名稱比較規範的話,一般不會錯亂。

 

3.--定義Bean的作用域和生命過程

@Scope("prototype")

值有:singleton,prototype,session,request,session,globalSession

@PostConstruct 

相當於init-method,使用在方法上,當Bean初始化時執行。

@PreDestroy 

相當於destory-method,使用在方法上,當Bean銷燬時執行。

--宣告式事務

@Transactional  

整理自https://www.cnblogs.com/fengli9998/p/7472247.html