Sping IOC經常使用註解

Sping IOC經常使用註解

1.什麼是註解

  1. 註解是代碼特殊標記,格式:@註解名稱(屬性名稱=屬性值, 屬性名稱=屬性值..)
  2. 使用註解,註解做用在類上面,方法上面,屬性上面
  3. 使用註解目的:簡化xml配置

2.經常使用註解

2.1用於建立對象的

​ 他們的做用就和在XML配置文件中編寫一個<bean>標籤實現的功能是同樣的java

  • Component:

    ​ 做用:用於把當前類對象存入spring容器中spring

    ​ 屬性:數據庫

    ​ value:用於指定bean的id。當咱們不寫時,它的默認值是當前類名,且首字母改小寫。框架

  • Controller:通常用在表現層
  • Service:通常用在業務層
  • Repository:通常用在持久層

    ==以上三個註解他們的做用和屬性與Component是如出一轍。他們三個是spring框架爲咱們提供明確的三層使用的註解,使咱們的三層對象更加清晰==maven

2.2用於注入數據的

​ 他們的做用就和在xml配置文件中的bean標籤中寫一個<property>標籤的做用是同樣的ui

  1. Autowired:spa

    • 做用:自動按照類型注入。

      ​ 只要容器中有惟一的一個bean對象類型和要注入的變量類型匹配,就能夠注入成功 若是ioc容器中沒有任何bean的類型和要注入的變量類型匹配,則報錯。prototype

      ​ 若是Ioc容器中有多個類型匹配時:使用要注入的對象變量做爲bean的id,在spring容器中尋找code

    • 出現位置:

      ​ 能夠是變量上,也能夠是方法上component

    • 細節:

      ​ 在使用註解注入時,set方法就不是必須的了。

  2. Qualifier:

    • 做用:

      ​ 在按照類中注入的基礎之上再按照名稱注入。它在給類成員注入時不能單獨使用。可是在給方法參數注入時能夠

    • 屬性:

      ​ value:用於指定注入bean的id。

  3. Resource:

    • 做用:直接按照bean的id注入。它能夠獨立使用
    • 屬性:name:用於指定bean的id。

以上三個注入都只能注入==其餘bean類型==的數據,而==基本類型和String類型==沒法使用上述註解實現。

==另外,集合類型的注入只能經過XML來實現。==

  1. Value

    • 做用:用於注入基本類型和String類型的數據
    • 屬性:

      ​ value:用於指定數據的值。它可使用spring中SpEL(也就是spring的el表達式)

      ​ SpEL的寫法:${表達式}

2.3用於改變做用範圍的

他們的做用就和在bean標籤中使用scope屬性實現的功能是同樣的

Scope

  • 做用:用於指定bean的做用範圍
  • 屬性:value:指定範圍的取值。經常使用取值:singleton(單例) prototype(多例)

2.4和生命週期相關

他們的做用就和在bean標籤中使用init-method和destroy-methode的做用是同樣的

  • PreDestroy:用於指定銷燬方法
  • PostConstruct :用於指定初始化方法

3.Spring新註解

使用一個配置類,它的做用和bean.xml是同樣的

@ComponentScan("com.ming")
@Import(JdbcConfig.class)
@PropertySource("classpath:driuid.properties")
public class SpringConfiguration {
}
  1. Configuration

    • 做用:指定當前類是一個配置類
    • 細節:當配置類做爲AnnotationConfigApplicationContext對象建立的參數時,該註解能夠不寫。
  2. ComponentScan

    • 做用:用於經過註解指定spring在建立容器時要掃描的包
    • 屬性:

      ​ value:它和basePackages的做用是同樣的,都是用於指定建立容器時要掃描的包。

      ​ 咱們使用此註解就等同於在xml中配置了:

      <context:component-scan base-package="com.ming"></context:component-scan>
  3. Bean

    • 做用:用於把當前方法的返回值做爲bean對象存入spring的ioc容器中
    • 屬性:

      ​ name:用於指定bean的id。當不寫時,默認值是當前方法的名稱

    • 細節:

      ​ 當咱們使用註解配置方法時,若是方法有參數,spring框架會去容器中查找有沒有可用的bean對象。

      ​ 查找的方式和Autowired註解的做用是同樣的

  4. Import

    • 做用:用於導入其餘的配置類
    • 屬性:

      ​ value:用於指定其餘配置類的字節碼。

      ​ 當咱們使用Import的註解以後,有Import註解的類就父配置類,而導入的都是子配置類

      //導入了和spring鏈接數據庫相關的配置類
      @Import(JdbcConfig.class)
  5. PropertySource

    • 做用:用於指定properties文件的位置
    • 屬性:

      ​ value:指定文件的名稱和路徑。

      ​ ==關鍵字:classpath,表示類路徑下==

4.Spring整合junit的配置

步驟:

  1. 使用maven導入spring整合junit的jar(座標)(spring-test)
  2. 使用Junit提供的一個註解把原有的main方法替換了,替換成spring提供的 @Runwith

    @RunWith(SpringJUnit4ClassRunner.class)
  3. 告知spring的運行器,spring和ioc建立是基於xml仍是註解的,而且說明位置

    ​ ==@ContextConfiguration==

    • locations:指定xml文件的位置,加上classpath關鍵字,表示在類路徑
    • classes:指定註解類所在地位置

      @ContextConfiguration(classes = SpringConfiguration.class)

      ==當咱們使用spring 5.x版本的時候,要求junit的jar必須是4.12及以上==

相關文章
相關標籤/搜索