spring學習-IOC(七)-XML轉Annotation

  • 參照之前xml方式的註解,可以大致如下:
    • 用於創建對象bean的
    • 用於注入數據的
    • 用於改變作用域的
    • 聲明週期相關的

  • 用於創建對象bean的:
    • @Component:創建當前對象的bean,未指定bean id時,默認爲類名首字母小寫
      • @Component(“accountService”)
    • @Controller:表現層
    • @Service:業務邏輯層
    • @Repository:持久層
      注意:Controller、Service、Repository三者作用一樣,只是爲了更好的描述三層關係
    • @Component-scan:指定掃描路徑,相當於xml中:<context:component-scan base-package=“anotation1”/>

  • 用於注入數據的:

    • @Autowired:
      • 按照類型注入
      • 作用於變量(可以是接口類,有對應的實現bean即可)、方法上
      • 注入策略:
        • 首先:根據類型判斷(接口滿足也可),
          • 無匹配:失敗退出
          • 有唯一bean:注入成功
          • 有多個bean:繼續匹配
        • 其次:多個bean時,再按照變量名是否等於bean id,匹配則成功,否則異常退出
    • @Qualifier:
      • value:限定注入名稱:@Qualifier(“accountDao”)
    • @Resource:
      • Value:直接指定bean id注入
    • @Value:
      • 注入基本類型、String
      • 語法:直接寫入值,也可以是spel語法:${表達式}
  • 注意事項:

    • 變量注入時:@Qualifier不能單獨使用,需要配合@Autowired
    • 方法注入時:@Qualifier可以單獨使用
    • @Autowire、@Qualifier、@Reousrce:只能注入bean,不能注入變量
    • 集合類型的:只能通過xml方式注入

  • 用於改變作用域的
    • @Scope:
      • Value:5個閾值,常用的就是singleton、prototype

  • 聲明週期相關的
    • @PreDestroy:指定銷燬方法
    • @PostConstruct:指定初始化方法
      這2個方法,就是xml中的init-method、destory-method
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章