標籤:spring annotation 註解
Spring的核心是依賴注入(DI),而依賴注入的基礎是依賴資訊的配置,這些配置稱之為中繼資料。在之前的的學習中,一直採用的是基於xml的配置,這些中繼資料配置在spring內部被註冊成為BeanDefinition,spring以此為模版建立bean和注入依賴。
從spring 2.0開始,spring依次加入了對註解型中繼資料配置的支援。自此我們有了另外一種配置bean的方式。Spring包含很多種註解,如我們比較熟悉的@AutoWired、@Compoent,還有一些不太熟悉的如@Inject @Improt等。
分類
Spring包含了如此多的註解,致使初學者對之望而生畏,對其中一些也比較模糊。因此可以對Spring的註解進行分類。Spring的xml中繼資料配置的核心是bean定義、屬性及其依賴的配置,因此也可以從這個角度對spring註解進行分為以下,首先見:
本篇先對這些註解做一下簡單的梳理,然後在後續的文章中,針對後三種做較為詳細的說明。
類別概述
下面稍微詳細的進行說明下各個類別,並列舉出大部分Spring支援的註解。
容器層級
容器層級指的是註解用來配置Spring容器的,對應於SpringXML設定檔,如
@Configuration作用在class上,其內可以定義很多Bean
@Import引入其他Configuration
@ComponentScan 自動掃描Bean組件配置,和Configuration配合使用
Bean層級
Bean層級指的是被註解標記的對象(類或者方法),會向Spring容器註冊一個BeanDefinition,Spring以此建立Bean執行個體。
@component 它和其他被其註解的註解 如@Service等作用於一個class上, 可以定義一個bean
@Named 和以上類似,來自JSR-330
@Bean 和@Configuration 或者@component 配合使用
Bean屬性層級
此類別指的是作用於bean的屬性,如是否消極式載入,Scope等,
@Qualifier 常和@autowired
@Lazy 消極式載入
@Scope 定義bean的Scope
@Required 可以標註在Set方法上,說明此方法需要被執行,否則跑出異常,長和@autowired 配合使用
@PostConstruct [email protected] 來自於JSR,作用於生命週期
依賴層級
Spring可以使用這些註解進行依賴注入,通常是自動的,或者藉助一些輔助資訊。
@autowired自動依賴注入,有幾種方式,byType,byName等,通常和@ Qualifier配合使用
@Inject 來自JSR-330,和以上類似,JSR-330相關註解
@Resource和以上類似,JSR-250相關註解
@Value 原始類型注入
總結
以上簡單的說明了下Spring支援的註解和其基本的作用,但到目前為止都是紙上談兵,但是對Spring註解建立總體的印象還是比較重要的。需要注意的是,Spring註解和 XML配置是相輔相成的,各自有優缺點,在實際應用中要根據實際情況來決定。下篇將詳細的講述本篇講述的內容。
spring之註解(一)概述