Spring系列6:spring註解,springMVC註解,springboot註解,

依賴注入DI有4種方式:
接口注入
setter注入
構造器注入
註解注入html

Spring註解注入

原文:http://www.javashuo.com/article/p-vvbomzgm-ec.htmljava

不須要在Spring配置文件中聲明Bean實例,但要在原有的基礎上進行如下3個改變:程序員

  1. 導入AOP的Jar包。註解的後臺實現用到了AOP編程
  2. 更換配置文件頭,添加相應的約束
  3. 在Spring配置文件中配置組件掃描器,用於在指定的基本包中掃描註解。


### 一、 定義Bean@Component
在類上使用註解@Component,該註解的value屬性用於指定該bean的id值。

另外,Spring還提供了3個功能基本和@Component等效的註解:
 @Repository 用於對DAO實現類進行註解
 @Service 用於對Service實現類進行註解
 @Controller 用於對Controller實現類進行註解
之因此建立這三個功能與@Component等效的註解,是爲了之後對其進行功能上的擴展,使它們再也不等效。web

二、 Bean的做用域@Scope

在類上使用註解@Scope,其value屬性用於指定做用域。默認爲singleton。
spring

@Scope註解的做用詳解

@Scope默認是單例模式,即scope="singleton"。編程

另外scope還有prototype、request、session、global session做用域。scope="prototype"多例服務器

  • 1.singleton單例模式,

   全局有且僅有一個實例session

  • 2.prototype原型模式,

   每次獲取Bean的時候會有一個新的實例app

  • 3.request  

        request表示該針對每一次HTTP請求都會產生一個新的bean,同時該bean僅在當前HTTP request內有效,測試

  • 4.session 

         session做用域表示該針對每一次HTTP請求都會產生一個新的bean,同時該bean僅在當前HTTP session內有效

  • 5.global session

         global session做用域相似於標準的HTTP Session做用域,不過它僅僅在基於portlet的web應用中才有意義。Portlet規範定義了全局Session的概念,它被全部構成某個 portlet web應用的各類不一樣的portlet所共享。在global session做用域中定義的bean被限定於全局portlet Session的生命週期範圍內。若是你在web中使用global session做用域來標識bean,那麼web會自動當成session類型來使用。

 

request、session、global session使用的時候首先要在初始化web的web.xml中作一些配置:請參考原文
————————————————
原文連接:https://blog.csdn.net/tzbugs/...

三、 基本類型屬性注入@Value

在屬性上使用註解@Value,該註解的value屬性用於指定要注入的值。
使用該註解完成屬性注入時,類中無需setter。固然,若屬性有setter,則也可將其加到setter上。

四、按類型注入域屬性@Autowired,@Autowired是spring的註解

須要在域屬性上使用註解@Autowired,該註解默認使用按類型自動裝配Bean的方式。
使用該註解完成屬性注入時,類中無需setter。固然,若屬性有setter,則也可將其加到setter上。

五、按名稱注入域屬性@Autowired與@Qualifier

須要在域屬性上聯合使用註解@Autowired與@Qualifier。@Qualifier的value屬性用於指定要匹配的Bean的id值。一樣類中無需setter,也可加到setter上。

@Autowired還有一個屬性required,默認值爲true,表示當匹配失敗後,會終止程序運行。若將其值設置爲false,則匹配失敗,將被忽略,未匹配的屬性值爲null。

六、域屬性註解@Resource,也就是說@Resource是java自帶的註解

Spring提供了對JSR-250規範中定義@Resource標準註解的支持。@Resource註解既能夠按名稱匹配Bean,也能夠按類型匹配Bean。使用該註解,要求JDK必須是6及以上版本。
(1)按類型注入域屬性
@Resource註解若不帶任何參數,則會按照類型進行Bean的匹配注入。

(2)按名稱注入域屬性
@Resource註解指定其name屬性,則name的值即爲按照名稱進行匹配的Bean的id。

七、Bean的生命始末@PostConstruct與@PreDestroy

在方法上使用@PostConstruct,與原來的init-method等效。在方法上使用@PreDestroy,與destroy-method等效。

八、使用JavaConfig進行配置(替代的是applicationContext.xml)

JavaConfig,是在Spring 3.0開始從一個獨立的項目併入到Spring中的。JavaConfig能夠當作一個用於完成Bean裝配的配置文件,只不過是程序員使用Java本身編寫的。

9.使用junit4測試Spring

建立一個普通POJO類做爲測試類。
須要在三個位置添加註解。
 在類頭添加兩個註解:
@RunWith(SpringJUnit4ClassRunner.class):用於指定運行環境
@ContextConfiguration(locations=「」):用於指定配置文件位置
將要測試的對象聲明爲成員變量,並在其頭上添加註解。

總結:註解與XML共同使用註解的好處是,配置方便,直觀。但其弊端也顯而易見:以硬編碼的方式寫入到了Java代碼中,其修改是須要從新編譯代碼的。
XML配置方式的最大好處是,對其所作修改,無需編譯代碼,只需重啓服務器便可將新的配置加載。

若註解與XML同用,XML的優先級要高於註解。這樣作的好處是,須要對某個Bean作修改,只需修改配置文件便可。固然,此時,Bean類要有setter或構造器。
原文連接:http://www.javashuo.com/article/p-vvbomzgm-ec.html

相關文章
相關標籤/搜索