spring之註解(一)概述

來源:互聯網
上載者:User

標籤: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之註解(一)概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.