1. 程式人生 > 實用技巧 >Spring學習筆記(二)-IOC基於註解

Spring學習筆記(二)-IOC基於註解

Spring學習筆記(二)-IOC基於註解

Spring配置檔案配置
  • 配置元件掃描器

  • <context:component-scan base-package="com.Xxx">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
  • 掃描com.Xxx下的所有註解但是不包括Controller註解

  • 掃描多個包:

    • 配置多個元件掃描器

    • 使用分隔符,分號或者逗號(;or,)

    • <context:component-scan base-package="com.Xxx.Xxx;com.Xxx.Xxx"/>
      
    • 指定父包

Component
  • 放置於類上,將該類放入容器

  • value即對應於id,在沒有設定value時,預設給予的名稱為類名首字母小寫

  • @Repository:dao介面的註解

  • @Controller:controller控制器的註解

  • @Service:業務層的註解

  • 本質都為@Component,只是別名,便於分類標記

  • 屬性賦值

    • 簡單型別

      • @Value,放置於屬性定義(不需要set方法)或set方法上

      • 讀取外部屬性配置檔案

      • <context:property-placeholder location="classpath:JdbcDataSourceConfig.properties"/>
        
      • 此時@Value中的值可以設定為外部檔案中的資料:${"key"},相似於EL表示式

    • 引用型別

      • @Autowired:由Spring提供的自動注入,預設為byType也支援byName,可以放置於屬性(不需要set方法)或set方法上
        • required屬性:預設為true,Spring此時會在啟動建立容器時就檢查是否注入成功,失敗時會終止程式,報錯。設定為false時即使自動注入失敗也會正常秩序程式,此時引用型別的值為null
      • @Qualifer:從容器中尋找指定名稱的物件,需要配合@Autowired使用
      • @Resource:JDK提供,在不提供引數時。預設採用byName方式注入,在byName注入不成功時byType,位置為屬性或set方法上,jdk1.8以上版本沒有該註解,配置name屬性時只使用byName方式注入