Spring學習第二天:Spring框架中基於註解的IOC配置

用於創建對象的:

  • Component: 作用:用於把當前類對象存入spring容器
    * 屬性:
    + value :用於指定bean的id 當我們不寫時,默認爲當前類名的首字母小寫的形式
  • Controller: 一般再表現層
  • Service:一般用在業務層
  • Repository:一般用在持久層
    注意: 以上三個註解他們的作用和屬性與Component時相同的它們三個是spring框架爲我們提供明確的三層使用的註解,使我們的三層對象更加清晰

用於注入數據的:

  • Autowired
    • **作用:**自動按照類型注入,
      + 只要容器中有一個唯一的一個bean對象類型和要注入的變量類型匹配,就可以注入成功
      + 如果ioc容器沒有任何bean類型和注入的變量類型匹配,則報異常
      + 如果Ioc容器中有多個類型匹配時,通過數據類型先找相同的域,然後通過變量名找到對應的bean類型
    • 出現位置: 可以在變量上,也可以在方法上
    • 細節: 在使用註解注入時,set方法就不是必須的了
  • Qualifier
    • 作用: 在按照類中注入的基礎之上再按照名稱注入。它在給類成員注入時不能單獨使用,但是在給方法參數注入時可以
    • 屬性:
      + value:用於指定注入的bean的id
  • Resource
    • 作用:直接按照bean的id注入,它可以獨立使用
    • 屬性
      + name:用於指定bean的id

注意: 以上三個注入都只能注入其他bean類型的數據,而基本類型和String類型無法使用上述註解實現,另外,集合類型的注入只能通過XML來實現

  • Value
    * 作用:用於注入基本類型和String類型的數據
    * 屬性:
    • value:用於指定數據的值,它可以使用spring中的SpEl(即spring的el表達式)
      SqEL的寫法, ${表達式}

用於改變作用範圍的:

他們的作用就和在bean標籤中使用scope屬性實現的功能時一樣的

  • Scope
    • 作用:用於指定bean的作用範圍
    • 屬性:
      • value:指定取值的範圍,常用取值 singleton(單例) prototype(多例)

和生命週期相關:(瞭解)

作用就和在bean標籤中使用init-method 和destory-method的作用是一樣的

  • PreDestory()
    *作用: 用於指定銷燬方法

  • PostConstruct()
    *作用: 用於指定初始化方法

==最後:==要在xml配置文件告知spring容器在創建容器時要掃描的包

<context:component-scan base-package="com.xatu"></context:component-scan>

多例對象的銷燬Spring不負責,靠垃圾回收機制

以上方式的基於註解還是需要配置文件(bean.xml)的,因爲其中還要告知spring容器在創建容器時要掃描的包。而一下一些註解可以是我們完全不使用xml文件,而是在一個類中配置即可

  • @Configuration

    • 作用:指定當前類是一個配置類
    • 細節:當配置類作爲AnnotationConfigApplicationContext對象創建的參數時,該註解可以不寫
  • @ComponentScan

    • 作用:用於通過註釋指定spring在創建容器時要掃描的包
    • 屬性:value:和basePackages的作用是相同的,都是用於指定創建容器時要掃描的包

    使用此註解就相當於在xml中配置了

  • @Bean :用於將當前方法的返回值作爲bean對象存入spring的容器中

    • 屬性
      + name:用於指定bean的id,當不寫時,默認值爲當前方法的名稱
    • 細節
      + 當我們使用註解配置方法時,如果方法有參數,spring框架會去容器中查找有沒有可用的bean對象
      查找的方式和Autowired註解是一樣的,如果有唯一一個類型就匹配,沒有的話會報錯,有多個的話,通過數據類型先找相同的域,然後通過變量名找到對應的bean類型
  • @Import

    • 作用:引入其他配置類
    • 屬性
      + value:指定其他配置類的字節碼
      在使用這些新註解在類中取代xml文件時,在使用時就不可以用ClassPathXmlApplicationContext,而是應該使用AnnotationConfigApplicationContext
ApplicationContext ac = new AnnotationConfigApplicationContext(被配置的類的名字.class);
  • @PropertySource("")
    • 作用:用於指定properties文件的位置
    • 屬性
      + value:指定文件的名稱和路徑
      • 關鍵字:classpath: 表示類路徑下
        示例:
@PropertySource("classpath:jdbc.properties")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章