【JAVA】Spring 自動注入類註釋詳解


首先在Spring配置文件中使用

<context:component-scan base-package="需要掃描的目錄" /> 

聲明啓動包掃描功能。<context:component-scan/> 配置項不但啓用了對類包進行掃描以實施註釋驅動 Bean 定義的功能,同時還啓用了註釋驅動自動注入的功能(即還隱式地在內部註冊了AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor)。


下面來說明自動注入類註釋的區別

@Autowired

Spring 2.5 引入了 @Autowired 註釋,它可以對類成員變量、方法及構造函數進行標註,完成自動裝配的工作。


@Resource

@Resource 的作用相當於 @Autowired,只不過 @Autowired 按 byType 自動注入,面@Resource 默認按 byName 自動注入罷了。@Resource 有兩個屬性是比較重要的,分別是 name 和 type,Spring 將@Resource 註釋的 name 屬性解析爲 Bean 的名字,而 type 屬性則解析爲 Bean 的類型。所以如果使用 name 屬性,則使用 byName 的自動注入策略,而使用 type 屬性時則使用 byType 自動注入策略。如果既不指定 name 也不指定 type 屬性,這時將通過反射機制使用 byName 自動注入策略。
Resource 註釋類位於 Spring 發佈包的 lib/j2ee/common-annotations.jar 類包中,因此在使用之前必須將其加入到項目的類庫中。


以下四個註釋功能基本相同,都是註釋在類上。

@Repository

@Repository 只能標註在 DAO 類上。這是因爲該註解的作用不只是將類識別爲 Bean,同時它還能將所標註的類中拋出的數據訪問異常封裝爲 Spring 的數據訪問異常類型。 Spring 本身提供了一個豐富的並且是與具體的數據訪問技術無關的數據訪問異常結構,用於封裝不同的持久層框架拋出的異常,使得異常獨立於底層的框架。


@Component

@Component 是一個泛化的概念,僅僅表示一個組件 (Bean) ,可以作用在任何層次。


@Service

@Service 通常作用在業務層,但是目前該功能與 @Component 相同。


@Constroller 

@Constroller 通常作用在控制層,但是目前該功能與 @Component 相同。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章