Spring IOC案例及單元測試

2022-09-17 20:09:11 字數 3834 閱讀 6695

queryrunner為jar包中的位元組碼,無法直接通過註解配置

資料來源同樣

因而需要乙個註解類來解決

/**

* 該類是乙個配置類,它的作用和bean.xml是一樣的

* spring中的新註解

* @configuration

* 作用:指定當前類是乙個配置類

* @componentscan

* 作用:用於通過註解指定spring在建立容器時要掃瞄的包

* 屬性:

* value:他和basepackages的作用時一樣的,都是用於指定建立容器時要掃瞄的包

* 我們使用此註解就等同於在xml中配置了

*

* @bean

* 作用:用於把當前方法的返回值作為bean物件存入spring的ioc容器中

* 屬性:

* name:用於指定 bean 的 id。預設值為 當前方法的名稱.

* 細節:當我們使用註解配置方法時,如果方法有引數,spring框架會去容器中查詢是否有可用的bean物件

* 查詢的方式與 @autowired註解的作用相同

* @import

* 作用:用於匯入其他的配置類

* 屬性:value:用於指定其他配置類的位元組碼。

* 當我們使用 @import註解後,有@import註解的類就是父類配置,而匯入的就是子配置類

* * @propertysource

* 作用:用於指定properties檔案的位置

* 屬性:

* value:指定檔案的名稱和路徑

* 關鍵字:classpath:表示類路徑

*/@configuration

//@componentscan(basepackages = ) 兩種都可以

@componentscan("huarangmeng")

@import(jdbcconfig.class)

@propertysource("classpath:jdbc.properties")

public class springconfiguration ")

private string driver;

@value("$")

private string url;

@value("$")

private string username;

@value("$")

private string password;

/*** 用於建立乙個queryrunner物件

* @param datasource

* @return

*/@bean(name = "runner")

@scope("prototype")

public queryrunner cretequeryrunner(datasource datasource)

/*** 建立資料來源物件

* @return

*/@bean(name = "datasource")

public datasource cretedatasource()catch (exception e)

}}

舉例說明 @configuration 和 @componentscan,引入@import 註解

倘若有兩個配置類,分別為 springconfiguration.class 和 jdbcconfig.class,直接作為引數,可不使用@configuration註解,兩個類可當作兄弟關係

//1.獲取容器

//2.得到業務層物件

iuserservice us = ac.getbean("userservice", iuserservice.class);

// jdbcconfig註解類

public class jdbcconfig

// springconfiguration註解類

public class springconfiguration

希望 springconfiguration.class 和 jdbcconfig.class 作為父子關係時

//1.獲取容器

//2.得到業務層物件

iuserservice us = ac.getbean("userservice", iuserservice.class);

// 第一種做法,給jdbcconfig類新增 @configuration註解

//給springconfiguration中新增掃瞄jdbcconfig的註解

@configuration

public class jdbcconfig

// springconfiguration註解類

@componentscan("huarangmeng")

public class springconfiguration

//第二種做法,給springconfiguration中新增@import註解

public class jdbcconfig

// springconfiguration註解類

@import(jdbcconfig.class)

public class springconfiguration

直接使用junit進行單元測試,存在問題,以下第一步和第二步,每個測試方法都要寫,且要求測試同學有學過spring才會寫出相應的**

@test

public void testfindall()

}

解決每個測試方法都要寫前兩步的問題

private iuserservice us;

@before

public void init()

@test

public void testfindall()

}仍然存在相應的**需要寫,則使用spring-test包解決問題

為什麼不能直接使用註解注入 iuserservice,原因是 junit 下沒有spring的ioc容器

/**

* 使用junit單元測試,測試我們的配置

* spring整合junit配置

* 1.匯入spring整合junit的jar包

* 2.使用junit提供的乙個註解把原有的main方法替換了,替換成spring提供的

* @runwith

* 3.告知spring 的執行期,spring的ioc容器建立時基於 xml 還是註解的,並說明位置

* @contextconfiguration

* location:指定xml檔案的位置,加上classpath關鍵字,表示在類路徑下

* classes:指定註解類所在的位置

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

*/@runwith(springjunit4classrunner.class)

@contextconfiguration(classes = springconfiguration.class)

public class userservicetest

}}

Spring Ioc入門案例

4 1 4個核心 beans,core context expression 1個依賴 commons loggins.jar 提供userservice介面和實現類 package com.itheima.a ioc public inte ce userservice package com.i...

Spring IOC常用註解的詳解及案例

目錄 1 spring ioc常用註解的解釋 2 ioc案例 基於xml和基於註解的案例 3 spring中 configuration註解的使用 4 使用spring整合junit實現測試 參考 參考 基本 xml和註解兩個案例 案例 含有事務案例 上述 2 中基於註解開發的ioc案例中,還需要x...

unittest單元測框架

django預設使用python的標準庫unittest編寫測試用例。學習django單元測試之前,先學習下unittest單元測試框架的基本使用。下面實現乙個簡單的單元測試1.簡單的加法和減法功能實現,module.py 如下 encoding utf 8 class calculator doc...