首頁常見問題正文

Spring中的Bean:基于Annotation的裝配

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

IT培訓班

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

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

1705973478038_基于Annotation的裝配.jpg

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

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

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

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

  5.@Autowired:用于對Bean的屬性變量、屬性的Set方法及構造函數(shù)進行標注,配合對應的注解處理器完成Bean的自動配置工作。默認按照Bean的類型進行裝配。

  6.@Resource:其作用與Autowired一樣。其區(qū)別在于@Autowired默認按照Bean類型進行裝配,而@Resource默認按照Bean實例名稱進行裝配。@Resource中有兩個重要屬性:name和type。Spring將name屬性解析為Bean實例名稱,type屬性解析為Bean實例類型。如果指定name屬性,則按實例名稱進行裝配;如果指定type屬性,則按Bean類型進行裝配;如果都不指定,則先按Bean實例名稱裝配,如果不能匹配,則再按照Bean類型進行裝配;如果都無法匹配,則拋出NoSuchBeanDefinitionException異常。

  7.@Qualifier:與@Autowired注解配合使用,會默認的按Bean類型裝配修改為按Bean的實例名稱裝配,Bean的實例名稱由@Qualifier注解的參數(shù)指定。

  在上面幾個注解中,雖然@Repository、@Service和@Controller功能與@Component注解的功能相同,但是為了更加清楚地表示出標注類的用途,建議使用@Repository、@Service與@Controller分別對實現(xiàn)類進行標注。

  本文版權歸黑馬程序員Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!

  作者:黑馬程序員Java培訓學院

  首發(fā):https://java.itheima.com

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