更新時(shí)間:2024-01-23 來源:黑馬程序員 瀏覽量:
在Spring中,盡管使用XML配置文件可以實(shí)現(xiàn)Bean的裝配工作,但如果應(yīng)用中Bean的數(shù)量較多,會(huì)導(dǎo)致XML配置文件過于臃腫,從而給維護(hù)和升級(jí)帶來一定的困難。
Java從JDK5.0以后,提供了Annotation(注解)功能,Spring也提供了對Annotation技術(shù)的全面支持。Spring3中定義了一系列的Annotation(注解),常用的注解如下。
1.@Component:可以使用此注解描述Spring中的Bean,但它是一個(gè)泛華概念,僅僅表示一個(gè)組件(Bean),并且可以作用在任何層次。使用時(shí)只需將該注解標(biāo)注在相應(yīng)類上即可。
2.@Repository:用于將數(shù)據(jù)訪問層(DAO層)的類標(biāo)識(shí)為Spring中的Bean,其功能與@Component相同。
3.@Service:通常作用在業(yè)務(wù)層(Service層),用于將業(yè)務(wù)層的類標(biāo)識(shí)為Spring中的Bean,其功能與@Component相同。
4.@Controller:通常作用在控制層(如Struts2的Action),用于將控制層的類標(biāo)識(shí)為Spring中的Bean,其功能與@Component相同。
5.@Autowired:用于對Bean的屬性變量、屬性的Set方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,配合對應(yīng)的注解處理器完成Bean的自動(dòng)配置工作。默認(rèn)按照Bean的類型進(jìn)行裝配。
6.@Resource:其作用與Autowired一樣。其區(qū)別在于@Autowired默認(rèn)按照Bean類型進(jìn)行裝配,而@Resource默認(rèn)按照Bean實(shí)例名稱進(jìn)行裝配。@Resource中有兩個(gè)重要屬性:name和type。Spring將name屬性解析為Bean實(shí)例名稱,type屬性解析為Bean實(shí)例類型。如果指定name屬性,則按實(shí)例名稱進(jìn)行裝配;如果指定type屬性,則按Bean類型進(jìn)行裝配;如果都不指定,則先按Bean實(shí)例名稱裝配,如果不能匹配,則再按照Bean類型進(jìn)行裝配;如果都無法匹配,則拋出NoSuchBeanDefinitionException異常。
7.@Qualifier:與@Autowired注解配合使用,會(huì)默認(rèn)的按Bean類型裝配修改為按Bean的實(shí)例名稱裝配,Bean的實(shí)例名稱由@Qualifier注解的參數(shù)指定。
在上面幾個(gè)注解中,雖然@Repository、@Service和@Controller功能與@Component注解的功能相同,但是為了更加清楚地表示出標(biāo)注類的用途,建議使用@Repository、@Service與@Controller分別對實(shí)現(xiàn)類進(jìn)行標(biāo)注。
本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員Java培訓(xùn)學(xué)院
首發(fā):https://java.itheima.com