Spring各種註解總結

主要參考的資料:http://blog.csdn.net/ye1992/article/details/19972041

http://blog.csdn.net/ye1992/article/details/19971467


以下都需要在 XML 配置文件中啓用Bean 的自動掃描功能,這可以通過<context:component-scan/>實現。這樣,我們就不再需要在 XML 中顯式使用 <bean/> 進行Bean 的配置。Spring 在容器初始化時將自動掃描 base-package 指定的包及其子包下的所有 class文件,所有標註了 的類都將被註冊爲 Spring Bean。

@Repository註解便屬於最先引入的一批,它用於將數據訪問層 (DAO 層 ) 的類標識爲 Spring Bean。@Repository 只能標註在 DAO 類原因:Spring本身提供了一個豐富的並且是與具體的數據訪問技術無關的數據訪問異常結構,用於封裝不同的持久層框架拋出的異常,使得異常獨立於底層的框架。

Spring2.5之後增加了三個@Component、@Service、@Constroller。

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

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

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

@Autowired對成員變量使用,可以將它們的 setter 方法從類中刪除。@Autowired 可以對成員變量、方法以及構造函數進行註釋。自動注入的策略是根據變量的類型,也就是byType 。此時Spring 容器中匹配的候選 Bean 數目必須有且僅有一個,否則Spring 容器將拋BeanCreationException 異常。在開發期或測試期(如爲了快速啓動 Spring 容器,僅引入一些模塊的 Spring 配置文件),可以用@Autowired(required = false) ,在找不到匹配 Bean 時也不報錯。和找不到一個類型匹配 Bean 相反的一個錯誤是:如果 Spring 容器中擁有多個候選 Bean,Spring 容器在啓動時也會拋出 BeanCreationException 異常。通過在XML中配置AutowiredAnnotationBeanPostProcessor ,它將掃描 Spring 容器中所有 Bean,當發現 Bean 中擁有@Autowired 註釋時就找到和其匹配(默認按類型匹配)的 Bean,並注入到對應的地方中去。

@Qualifier("office") 中的 office 是 Bean 的名稱,所以 @Autowired@Qualifier 結合使用時,轉變成 byName 了。 ,而@Qualifier 的標註對象是成員變量、方法入參、構造函數入參。

@RequestParam註解可以用來提取名爲“number”的String類型的參數,並將之作爲輸入參數傳入。 例如public void show(@RequestParam("number") String number, Map<String, Object> model) { }。屬性required=false或者true可以用來要求@RequestParam配置的前端參數是否一定要傳給後臺 。

@RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作爲父路徑。

value:     指定請求的實際地址,指定的地址可以是URI Template 模式(後面將會說明);

method:  指定請求的method類型, GET、POST、PUT、DELETE等。

@Scope,能夠配合這四個註解在標註 Bean 的同時能夠指定 Bean 的作用域。與通過 XML 配置的 Spring Bean 一樣,通過上述註解標識的Bean,其默認作用域是"singleton"。使用該註解時只需提供作用域的名稱就可以了。例如:

	@Scope("prototype") 
	@Repository 
	public class Demo { … } 
	當一個 Bean 被自動檢測到時,會根據那個掃描器的 BeanNameGenerator 策略生成它的Bean名稱。默認情況下,對於使用了 name 屬性的 註解,會把 name 值作爲 Bean 的名字。如果這個註解不使用 name屬性或是其他被自定義過濾器發現的組件,默認 Bean 名稱會是小寫開頭的非限定類名。

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