溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring Boot 中如何配置 Profile

發(fā)布時(shí)間:2020-06-26 14:17:45 來(lái)源:網(wǎng)絡(luò) 閱讀:273 作者:Java筆記丶 欄目:編程語(yǔ)言
一個(gè)應(yīng)用為了在不同的環(huán)境下工作,常常會(huì)有不同的配置,代碼邏輯處理。Spring Boot 對(duì)此提供了簡(jiǎn)便的支持。
關(guān)鍵詞:?@Profile、spring.profiles.active

目錄

  • 區(qū)分環(huán)境的配置

  • properties 配置

  • yml 配置

  • 區(qū)分環(huán)境的代碼

  • 修飾類

  • 修飾注解

  • 修飾方法

  • 激活 profile

  • 插件激活 profile

  • main 方法激活 profile

  • jar 激活 profile

  • 在 Java 代碼中激活 profile

區(qū)分環(huán)境的配置

properties 配置

假設(shè),一個(gè)應(yīng)用的工作環(huán)境有:dev、test、prod

那么,我們可以添加 4 個(gè)配置文件:

  • applcation.properties?- 公共配置

  • application-dev.properties?- 開發(fā)環(huán)境配置

  • application-test.properties?- 測(cè)試環(huán)境配置

  • application-prod.properties?- 生產(chǎn)環(huán)境配置

在?applcation.properties?文件中可以通過以下配置來(lái)激活 profile:

spring.profiles.active?=?test

yml 配置

與 properties 文件類似,我們也可以添加 4 個(gè)配置文件:

  • applcation.yml?- 公共配置

  • application-dev.yml?- 開發(fā)環(huán)境配置

  • application-test.yml?- 測(cè)試環(huán)境配置

  • application-prod.yml?- 生產(chǎn)環(huán)境配置

在?applcation.yml?文件中可以通過以下配置來(lái)激活 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 之間通過?---?分割

區(qū)分環(huán)境的代碼

使用?@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");
????}
}

激活 profile

插件激活 profile

spring-boot:run?-Drun.profiles=prod

main 方法激活 profile

--spring.profiles.active=prod

jar 激活 profile

java?-jar?-Dspring.profiles.active=prod?*.jar

在 Java 代碼中激活 profile

直接指定環(huán)境變量來(lái)激活 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、MongoDBMySQL、Zookeeper、Spring Cloud、Dubbo高并發(fā)分布式等教程,一共30G,需要自己領(lǐng)取。
傳送門:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI