SpringBoot | 第五章:多環(huán)境配置

原文出處: oKong

前言

寫上一篇看英文資料,耗費了心力呀,這章,相對來說簡單點。也比較熟悉,但是這很實用。不扯了,開始~

多環(huán)境配置

在開發(fā)應用時,常用部署的應用是多個的,比如:開發(fā)、測試、聯(lián)調(diào)、生產(chǎn)等不同的應用環(huán)境,這些應用環(huán)境都對應不同的配置項,比如swagger一般上在生產(chǎn)時是關閉的;不同環(huán)境數(shù)據(jù)庫地址、端口號等都是不盡相同的,要是沒有多環(huán)境的自由切換,部署起來是很繁瑣也容易出錯的。

maven的多環(huán)境配置

在沒有使用過springboot的多環(huán)境配置時,原先是利用mavenprofile功能進行多環(huán)境配置,這里我簡單回顧下。

maven配置

<profiles>
    <profile>
       <id>dev</id>
       <activation>
             <activeByDefault>true</activeByDefault>
         </activation>
         <properties>
            <pom.port>8080</pom.port>
         </properties>
    </profile>
    <profile>
       <id>test</id>
         <properties>
            <pom.port>8888</pom.port>
         </properties>
    </profile>       
 </profiles>
 <build>
 <resources>
     <resource>
         <directory>src/main/resources</directory>
         <includes>
             <include>**/*</include>
         </includes>
     </resource>
     <resource>
         <directory>${project.basedir}/src/main/resources</directory>
         <includes>
             <include>**/*.properties</include>
         </includes>
         <!-- 加入此屬性,才會進行過濾 -->
         <filtering>true</filtering>
     </resource>
 </resources>
 <plugins>
     <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <configuration>
             <encoding>utf-8</encoding>
             <!-- 需要加入,因為maven默認的是${},而springbooot 默認會把此替換成@{} -->
             <useDefaultDelimiters>true</useDefaultDelimiters>
         </configuration>
     </plugin>
     <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>
 </plugins>
 </build>

然后編譯時,加入-Ptest,則會替換test環(huán)境下的參數(shù)值。 完整參數(shù):

mvn clean install -DskipTests -Ptest

application.properties

server.port=${pom.port}

利用maven實現(xiàn)多環(huán)境配置,比較麻煩的就是每次部署新環(huán)境時,都需要再次指定環(huán)境編譯打包一次。一下進入主題,springboot的多環(huán)境,比較優(yōu)雅了許多。

springboot多環(huán)境配置

Profile是Spring針對不同環(huán)境不同配置的支持。需要滿足application-{profile}.properties,{profile}對應你的環(huán)境標識。如:

  • application-dev.properties:開發(fā)環(huán)境
  • application-test.properties:測試環(huán)境

而指定執(zhí)行哪份配置文件,只需要在application.properties配置spring.profiles.active為對應${profile}的值。

# 指定環(huán)境為dev
spring.profiles.active=dev

則會加載:application-dev.properties的配置內(nèi)容。

2018-07-15 14:52:41.304  INFO 15496 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2018-07-15 14:52:41.310  INFO 15496 --- [           main] c.l.l.s.chapter5.Chapter5Application     : Started Chapter5Application in 8.506 seconds (JVM running for 10.81)
2018-07-15 14:52:41.316  INFO 15496 --- [           main] c.l.l.s.chapter5.Chapter5Application     : 多環(huán)境應用啟動.

還可以在命令行方式激活不同環(huán)境配置,如

java -jar xxx.jar --spring.profiles.active=test

此時就會加載application-test.properties的配置內(nèi)容。 test:

這里順便提一句,可能在不同環(huán)境下,可能加載不同的bean時,可利用@Profile注解來動態(tài)激活

@Profile("dev")//支持數(shù)組:@Profile({"dev","test"})
@Configuration
@Slf4j
public class ProfileBean {
 
    @PostConstruct
    public void init() {
        log.info("dev環(huán)境下激活");
    }    
}

啟動時??刂婆_輸出:

2018-07-15 15:04:44.540  INFO 11876 --- [           main] c.l.l.springboot.chapter5.ProfileBean    : dev環(huán)境下激活

總結

目前互聯(lián)網(wǎng)上很多大佬都有SpringBoot系列教程,如有雷同,請多多包涵了。本文是作者在電腦前一字一句敲的,每一步都是親身實踐過的。若文中有所錯誤之處,還望提出,謝謝。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容