spring之註解(一)概述
Spring的核心是依賴註入(DI),而依賴註入的基礎是依賴信息的配置。這些配置稱之為元數據。
在之前的的學習中。一直採用的是基於xml的配置,這些元數據配置在spring內部被註冊成為BeanDefinition,spring以此為模版創建bean和註入依賴。
從spring 2.0開始,spring依次增加了對註解型元數據配置的支持。自此我們有了第二種配置bean的方式。Spring包括非常多種註解,[email protected]@Compoent,[email protected] @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 它和其它被其註解的註解 [email protected] 能夠定義一個bean
@Named 和以上類似,來自JSR-330
@Bean [email protected] [email protected] 配合使用
Bean屬性級別
此類別指的是作用於bean的屬性。如是否延遲載入,Scope等。
@Qualifier [email protected]
@Lazy 延遲載入
@Scope 定義bean的Scope
@Required 能夠標註在Set方法上,說明此方法須要被運行,否則跑出異常,[email protected] 配合使用
@PostConstruct [email protected] 來自於JSR,作用於生命周期
依賴級別
Spring能夠使用這些註解進行依賴註入,一般是自己主動的,或者借助一些輔助信息。
@autowired自己主動依賴註入,有幾種方式,byType,byName等,通常和@ Qualifier配合使用
@Inject 來自JSR-330,和以上類似。JSR-330相關註解
@Resource和以上類似,JSR-250相關註解
@Value 原始類型註入
總結
以上簡單的說明了下Spring支持的註解和其主要的作用,但到眼下為止都是紙上談兵。可是對Spring註解建立整體的印象還是比較重要的。須要註意的是,Spring註解和 XML配置是相輔相成的,各自有優缺點,在實際應用中要依據實際情況來決定。下篇將具體的講述本篇講述的內容。
spring之註解(一)概述