首頁常見問題正文

Spring中的Bean:基于Annotation的裝配

更新時間:2024-01-23 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Spring中,盡管使用XML配置文件可以實(shí)現(xiàn)Bean的裝配工作,但如果應(yīng)用中Bean的數(shù)量較多,會導(dǎo)致XML配置文件過于臃腫,從而給維護(hù)和升級帶來一定的困難。

  Java從JDK5.0以后,提供了Annotation(注解)功能,Spring也提供了對Annotation技術(shù)的全面支持。Spring3中定義了一系列的Annotation(注解),常用的注解如下。

1705973478038_基于Annotation的裝配.jpg

  1.@Component:可以使用此注解描述Spring中的Bean,但它是一個泛華概念,僅僅表示一個組件(Bean),并且可以作用在任何層次。使用時只需將該注解標(biāo)注在相應(yīng)類上即可。

  2.@Repository:用于將數(shù)據(jù)訪問層(DAO層)的類標(biāo)識為Spring中的Bean,其功能與@Component相同。

  3.@Service:通常作用在業(yè)務(wù)層(Service層),用于將業(yè)務(wù)層的類標(biāo)識為Spring中的Bean,其功能與@Component相同。

  4.@Controller:通常作用在控制層(如Struts2的Action),用于將控制層的類標(biāo)識為Spring中的Bean,其功能與@Component相同。

  5.@Autowired:用于對Bean的屬性變量、屬性的Set方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,配合對應(yīng)的注解處理器完成Bean的自動配置工作。默認(rèn)按照Bean的類型進(jìn)行裝配。

  6.@Resource:其作用與Autowired一樣。其區(qū)別在于@Autowired默認(rèn)按照Bean類型進(jìn)行裝配,而@Resource默認(rèn)按照Bean實(shí)例名稱進(jìn)行裝配。@Resource中有兩個重要屬性: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注解配合使用,會默認(rèn)的按Bean類型裝配修改為按Bean的實(shí)例名稱裝配,Bean的實(shí)例名稱由@Qualifier注解的參數(shù)指定。

  在上面幾個注解中,雖然@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

分享到:
在線咨詢 我要報名
和我們在線交談!