SpringBoot動態切換配置文件

 

在應用程序中有不少配置項,例如數據庫鏈接地址、日誌文件位置、應用服務器配置等等。爲了安全與靈活性,咱們推薦將Spring Boot的配置文件放在生產環境的服務器上,並嚴格控制訪問權限。在運行應用時能夠經過命令行參數指定配置文件:html

java -jar location_of_your_jar_file.jar --spring.config.location=location_of_your_config_file.properties

這樣作的好處是:java

  • 配置位於生產環境中,數據庫鏈接等私密信息不容易泄露
  • 靈活性強,同一份代碼(包括構建的jar包)能夠應用於不一樣的環境配置(開發、測試、生產)

使用Profile區分環境

在某些狀況下,應用的某些業務邏輯可能須要有不一樣的實現。例如郵件服務,假設EmailService中包含的send(String email)方法向指定地址發送電子郵件,可是咱們僅僅但願在生產環境中才執行真正發送郵件的代碼,而開發環境裏則不發送以避免向用戶發送無心義的垃圾郵件。spring

咱們能夠藉助Spring的註解@Profile實現這樣的功能,這樣須要定義兩個實現EmailService藉口的類:數據庫

 

@Service
@Profile("dev")
class DevEmailService implements EmailService {

    public void send(String email) {
        //Do Nothing
    }
}

@Service
@Profile("prod")
class ProdEmailService implements EmailService {

    public void send(String email) {
        //Real Email Service Logic
    }
}

@Profile("dev")代表只有Spring定義的Profile爲dev時纔會實例化DevEmailService這個類。那麼如何設置Profile呢?安全

在配置文件中指定

application.properties中加入:服務器

spring.profiles.active=dev

經過命令行參數

java -jar app.jar --spring.profiles.active=dev

 

另外一篇更爲詳細的方法,基本差很少:app

http://www.cnblogs.com/java-zhao/p/5469183.html測試

相關文章
相關標籤/搜索