一個(gè)應(yīng)用為了在不同的環(huán)境下工作,常常會(huì)有不同的配置,代碼邏輯處理。Spring Boot 對此提供了簡便的支持。
關(guān)鍵詞:?@Profile
、spring.profiles.active
區(qū)分環(huán)境的配置
專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江北免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。properties 配置
yml 配置
區(qū)分環(huán)境的代碼
修飾類
修飾注解
修飾方法
激活 profile
插件激活 profile
main 方法激活 profile
jar 激活 profile
在 Java 代碼中激活 profile
假設(shè),一個(gè)應(yīng)用的工作環(huán)境有:dev、test、prod
那么,我們可以添加 4 個(gè)配置文件:
applcation.properties
?- 公共配置
application-dev.properties
?- 開發(fā)環(huán)境配置
application-test.properties
?- 測試環(huán)境配置
application-prod.properties
?- 生產(chǎn)環(huán)境配置
在?applcation.properties
?文件中可以通過以下配置來激活 profile:
spring.profiles.active?=?test
與 properties 文件類似,我們也可以添加 4 個(gè)配置文件:
applcation.yml
?- 公共配置
application-dev.yml
?- 開發(fā)環(huán)境配置
application-test.yml
?- 測試環(huán)境配置
application-prod.yml
?- 生產(chǎn)環(huán)境配置
在?applcation.yml
?文件中可以通過以下配置來激活 profile:
spring: ??profiles: ????active:?prod
此外,yml 文件也可以在一個(gè)文件中完成所有 profile 的配置:
#?激活?prod spring: ??profiles: ????active:?prod #?也可以同時(shí)激活多個(gè)?profile #?spring.profiles.active:?prod,proddb,prodlog --- #?dev?配置 spring: ??profiles:?dev #?略去配置 --- spring: ??profiles:?test #?略去配置 --- spring.profiles:?prod spring.profiles.include: ??-?proddb ??-?prodlog --- spring: ??profiles:?proddb #?略去配置 --- spring: ??profiles:?prodlog #?略去配置
注意:不同 profile 之間通過?---
?分割
使用?@Profile
?注解可以指定類或方法在特定的 Profile 環(huán)境生效。
@Configuration @Profile("production") public?class?JndiDataConfig?{ ????@Bean(destroyMethod="") ????public?DataSource?dataSource()?throws?Exception?{ ????????Context?ctx?=?new?InitialContext(); ????????return?(DataSource)?ctx.lookup("java:comp/env/jdbc/datasource"); ????} }
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Profile("production") public?@interface?Production?{ }
@Configuration public?class?AppConfig?{ ????@Bean("dataSource") ????@Profile("development") ????public?DataSource?standaloneDataSource()?{ ????????return?new?EmbeddedDatabaseBuilder() ????????????.setType(EmbeddedDatabaseType.HSQL) ????????????.addScript("classpath:com/bank/config/sql/schema.sql") ????????????.addScript("classpath:com/bank/config/sql/test-data.sql") ????????????.build(); ????} ????@Bean("dataSource") ????@Profile("production") ????public?DataSource?jndiDataSource()?throws?Exception?{ ????????Context?ctx?=?new?InitialContext(); ????????return?(DataSource)?ctx.lookup("java:comp/env/jdbc/datasource"); ????} }
spring-boot:run?-Drun.profiles=prod
--spring.profiles.active=prod
java?-jar?-Dspring.profiles.active=prod?*.jar
直接指定環(huán)境變量來激活 profile:
System.setProperty("spring.profiles.active",?"test");
在 Spring 容器中激活 profile:
AnnotationConfigApplicationContext?ctx?=?new?AnnotationConfigApplicationContext(); ctx.getEnvironment().setActiveProfiles("development"); ctx.register(SomeConfig.class,?StandaloneDataConfig.class,?JndiDataConfig.class); ctx.refresh();
使用方法:
mvn?clean?package cd?target java?-jar?-Dspring.profiles.active=prod?sbe-core-profile.jar
本人免費(fèi)整理了Java高級(jí)資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并發(fā)分布式等教程,一共30G,需要自己領(lǐng)取。
傳送門:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。