Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解
Spring提供了@Profile注解來(lái)解決程序在不同運(yùn)行環(huán)境時(shí)候的配置差別。
項(xiàng)目開(kāi)發(fā)時(shí)候大多包含:開(kāi)發(fā)、測(cè)試、上線(xiàn)運(yùn)行幾個(gè)過(guò)程,在每個(gè)過(guò)程中軟件的工作環(huán)境一般多少有些差別,比如:在開(kāi)發(fā)階段利用本地?cái)?shù)據(jù)庫(kù)、測(cè)試階段采用測(cè)試數(shù)據(jù)庫(kù)、在上線(xiàn)運(yùn)行階段使用生產(chǎn)數(shù)據(jù)庫(kù)。這些差別如果采用了手工維護(hù)就會(huì)存在各種問(wèn)題:效率低下、容易發(fā)生人為因素意外錯(cuò)誤。
利用Spring提供的@Profile注解就可以定義程序不同的運(yùn)行場(chǎng)景配置,配置以后在啟動(dòng)程序時(shí)候給定不同的啟動(dòng)參數(shù)就可以靈活的切換運(yùn)行場(chǎng)景,不再需要人工干預(yù),這樣就可以大大提升開(kāi)發(fā)效率。

以配置開(kāi)發(fā)環(huán)和生產(chǎn)境數(shù)據(jù)源為例子,具體說(shuō)明使用步驟:
在Spring配置文件中利用@Profile聲明開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境使用的數(shù)據(jù)源:
@Configuration
public class DataSourceConfig {
@Bean(name="dataSource") //重寫(xiě)B(tài)eanID
@Profile("dev") //配置開(kāi)發(fā)環(huán)境使用的數(shù)據(jù)源
public DataSource dataSourceForDev() {
DruidDataSource dataSource = new DruidDataSource();
...
return dataSource;
}
@Bean(name="dataSource")//重寫(xiě)B(tài)eanID
@Profile("production")//配置生產(chǎn)環(huán)境使用的數(shù)據(jù)源
public DataSource dataSourceForProd() {
DruidDataSource dataSource = new DruidDataSource();
...
return dataSource;
}
}
其中“dev”表示開(kāi)發(fā)環(huán)境,“production”表示生產(chǎn)環(huán)境,顯然有兩個(gè)BeanID是“dataSource”的數(shù)據(jù)源Bean對(duì)象,這兩個(gè)對(duì)象不會(huì)同時(shí)初始化,Spring會(huì)根據(jù)激活的Profile屬性初始化其中一個(gè)數(shù)據(jù)源Bean對(duì)象。
使用如下啟動(dòng)命令參數(shù)-Dspring.profiles.active=dev就可以設(shè)置當(dāng)前激活的Profile是發(fā)環(huán)境“dev”,此時(shí)Spring會(huì)初始化屬于開(kāi)發(fā)環(huán)境的數(shù)據(jù)源Bean對(duì)象:
java -Dspring.profiles.active=dev -jar demo.jar
或者在SpringBoot的啟動(dòng)類(lèi)中使用系統(tǒng)屬性設(shè)置激活的Profile:
System.setProperty("spring.profiles.active" , "dev"); SpringApplication.run(AppConfig.class);
在測(cè)試時(shí)候可以使用 @ActiveProfiles注解設(shè)置當(dāng)前激活的Profile。
到此這篇關(guān)于Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解的文章就介紹到這了,更多相關(guān)Java之Spring認(rèn)證使用Profile配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中計(jì)算字符串長(zhǎng)度的方法及u4E00與u9FBB的認(rèn)識(shí)
字符串采用unicode編碼的方式時(shí),計(jì)算字符串長(zhǎng)度的方法找出UNICODE編碼中的漢字的代表的范圍“\u4E00” 到“\u9FBB”之間感興趣的朋友可以參考本文,或許對(duì)你有所幫助2013-01-01
springboot中設(shè)置定時(shí)任務(wù)的三種方法小結(jié)
在我們開(kāi)發(fā)項(xiàng)目過(guò)程中,經(jīng)常需要定時(shí)任務(wù)來(lái)幫助我們來(lái)做一些內(nèi)容,本文介紹了springboot中設(shè)置定時(shí)任務(wù)的三種方法,主要包括@Scheduled注解,Quartz框架和xxl-job框架的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12
基于mybatis高級(jí)映射多對(duì)多查詢(xún)的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇基于mybatis高級(jí)映射多對(duì)多查詢(xún)的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
java 中Executor, ExecutorService 和 Executors 間的不同
這篇文章主要介紹了java 中Executor, ExecutorService 和 Executors 間的不同的相關(guān)資料,需要的朋友可以參考下2017-06-06
SpringBoot中使用Redis對(duì)接口進(jìn)行限流的實(shí)現(xiàn)
本文將結(jié)合實(shí)例代碼,介紹SpringBoot中使用Redis對(duì)接口進(jìn)行限流的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
Mybatis實(shí)現(xiàn)增刪改查(CRUD)實(shí)例代碼
MyBatis 是支持普通 SQL 查詢(xún),存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架。通過(guò)本文給大家介紹Mybatis實(shí)現(xiàn)增刪改查(CRUD)實(shí)例代碼 ,需要的朋友參考下2016-05-05

