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)文章
SpringSceurity實(shí)現(xiàn)短信驗(yàn)證碼功能的示例代碼
這篇文章主要介紹了SpringSceurity實(shí)現(xiàn)短信驗(yàn)證碼功能的示例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Mybatis plus關(guān)閉駝峰命名的四種方法(防止出現(xiàn)查詢(xún)?yōu)镹ull)
這篇文章主要介紹了Mybatis plus關(guān)閉駝峰命名的四種方法(防止出現(xiàn)查詢(xún)?yōu)镹ull),數(shù)據(jù)庫(kù)的字段命名方式為使用下劃線(xiàn)連接,對(duì)應(yīng)的實(shí)體類(lèi)應(yīng)該是駝峰命名方式,而我使用的是和數(shù)據(jù)庫(kù)同樣的命名方式,需要的朋友可以參考下2022-01-01SpringBoot整合ip2region實(shí)現(xiàn)使用ip監(jiān)控用戶(hù)訪問(wèn)城市的詳細(xì)過(guò)程
這篇文章主要介紹了SpringBoot整合ip2region實(shí)現(xiàn)使用ip監(jiān)控用戶(hù)訪問(wèn)城市,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07關(guān)于解決雪花算法生成的ID傳輸前端后精度丟失問(wèn)題
這篇文章主要介紹了關(guān)于解決雪花算法生成的ID傳輸前端后精度丟失問(wèn)題,雪花算法生成的ID傳輸?shù)角岸藭r(shí),會(huì)出現(xiàn)后三位精度丟失,本文提供了解決思路,需要的朋友可以參考下2023-03-03FeignClient中name和url屬性的作用說(shuō)明
這篇文章主要介紹了FeignClient中name和url屬性的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Mybatis中 mapper-locations和@MapperScan的作用
這篇文章主要介紹了Mybatis中 mapper-locations和@MapperScan的作用,mybatis.mapper-locations在SpringBoot配置文件中使用,作用是掃描Mapper接口對(duì)應(yīng)的XML文件,需要的朋友可以參考下2023-05-05