主要參考的資料:http://blog.csdn.net/ye1992/article/details/19972041
http://blog.csdn.net/ye1992/article/details/19971467
@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 名稱會是小寫開頭的非限定類名。