spring註解-configuration和componentscan
* configuration
* 作用:指定當前類是乙個配置類
* componentscan
* 作用:用於通過註解指定spring在建立容器時要掃瞄的包
* 屬性:
* value:它和basepackages的作用是一樣的,都是用於指定建立容器時要掃瞄的包。
* 我們使用此註解就等同於在xml中配置了:
* 作用:用於把當前方法的返回值作為bean物件存入spring的ioc容器中
* 屬性:
* name:用於指定bean的id。當不寫時,預設值是當前方法的名稱
* 細節:
* 當我們使用註解配置方法時,如果方法有引數,spring框架會去容器中查詢有沒有可用的bean物件。
* 查詢的方式和autowired註解的作用是一樣的
public class springconfiguration
@bean(name = "datasource")
public datasource createdatasource()catch (exception e)
}
}
配置完後獲取容器的方式變了
//1.獲取容器
*import
* 作用:用於匯入其他的配置類
* 屬性:
* value:用於指定其他配置類的位元組碼。
* 當我們使用import的註解之後,有import註解的類就父配置類,而匯入的都是子配置類
@import(jdbcconfig.class)父配置類
* propertysource
* 作用:用於指定properties檔案的位置
* 屬性:
* value:指定檔案的名稱和路徑。
* 關鍵字:classpath,表示類路徑下
@propertysource("classpath:[有包名就寫包名xx/properties/]jdbcconfig.properties")
@componentscan("com.baidu")
@import(jdbcconfig.class)
@propertysource("classpath:jdbcconfig.properties")
public class springconfiguration
public class jdbcconfig ")
private string driver;
@value("$")
private string url;
@value("$")
private string username;
@value("$")
private string password;
/**
* 建立資料來源物件
* @return
*/@bean(name="ds2")
public datasource createdatasource()catch (exception e)
}
@qualifier("ds2")
當容器中找不到與形參名匹配的物件時會使用qualifier註解中的配置
@bean(name="runner")
@scope("prototype")
public queryrunner createqueryrunner(@qualifier("ds2") datasource datasource)
@bean(name="ds2")
public datasource createdatasource()catch (exception e)
}
spring整合junit分析
1、應用程式的入口
main方法
2、junit單元測試中,沒有main方法也能執行
junit整合了乙個main方法
該方法就會判斷當前測試類中哪些方法有 @test註解
junit就讓有test註解的方法執行
3、junit不會管我們是否採用spring框架
在執行測試方法時,junit根本不知道我們是不是使用了spring框架
所以也就不會為我們讀取配置檔案/配置類建立spring核心容器
4、由以上三點可知
當測試方法執行時,沒有ioc容器,就算寫了autowired註解,也無法實現注入
解決方法:
/**
* 使用junit單元測試:測試我們的配置
* spring整合junit的配置
* 1、匯入spring整合junit的jar(座標)
* 2、使用junit提供的乙個註解把原有的main方法替換了,替換成spring提供的
* @runwith
* 3、告知spring的執行器,spring和ioc建立是基於xml還是註解的,並且說明位置
* @contextconfiguration
* locations:指定xml檔案的位置,加上classpath關鍵字,表示在類路徑下
* classes:指定註解類所在地位置
* * 當我們使用spring 5.x版本的時候,要求junit的jar必須是4.12及以上
*/
例如:
@runwith(springjunit4classrunner.class)//固定寫法
@contextconfiguration(classes = 自定義的配置類.class)
or
@contextconfiguration(locations = "classpath:xx.xml")
locations =
public class accountservicetest {
@autowired
private iaccountservice as = null;
spring常用的註解
用於標註控制層,並且把該類注入到spring容器中,如果不指定預設的beanname為該類的類名 首字母小寫 指定的話通過 controller beanname 自定義。用於標註業務層,功能和 controller沒本質的區,只是為了讓 的結構清晰,層次分明,可能在以後的版本中會為各自的註解新增特...
Spring常用的註解
component取代 component id 取代 提供3個 component 註解衍生註解 功能一樣 取代 repository dao層 service service層 controller web層 依賴注入 給私有字段設定,也可以給 setter 方法設定 普通值 value 引用值...
Spring的常用註解
1 profile 在軟體開發的過程中,敏捷開發模式很常見,也就是每次都提交乙個小階段的測試。那麼可能是開發人員使用一套環境,而測試人員使用另一套環境,而這兩套系統的資料庫是不一樣的,這樣就有了在不同的環境中進行切換的需求了。spring也會對這樣的場景進行支援,在spring中我們可以定義bean...