背景 項目裡面的yml文件為了區別線上、測試、本地環境,分別有application-prod.yml,application-dev.yml,application-local.yml;但是每個裡面有很多相同的配置,希望配置文件裡面的運維相關的公共配置抽取出來,統一管理 實現方案 通過在appli ...
背景
項目裡面的yml文件為了區別線上、測試、本地環境,分別有application-prod.yml,application-dev.yml,application-local.yml;但是每個裡面有很多相同的配置,希望配置文件裡面的運維相關的公共配置抽取出來,統一管理
實現方案
通過在application.yml include 標簽把不同的配置(數據源配置,Redis配置)引入
application.yml
spring: profiles: active: @profiles.active@ include: kafka,datasource application: name: xxx mybatis-plus: global-config: db-config: logic-delete-field: deleted # 全局邏輯刪除的實體欄位名 logic-delete-value: 1 # 邏輯已刪除值(預設為 1) logic-not-delete-value: 0 # 邏輯未刪除值(預設為 0)
application-local.yml
server: port: 80 datasource: type: com.alibaba.druid.pool.DruidDataSource url: xxx username: xxx password: xxx
application-datasource.yml
spring: datasource:
# 通過${} 從yml上下文可以取到 applicaiton-local.yml 對應的變數 type: ${datasource.type} driverClassName: com.mysql.jdbc.Driver url: ${datasource.url} username: ${datasource.username} password: ${datasource.password} initial-size: 10 # 最大連接池數量 max-active: 100 # 最小連接池數量 min-idle: 10 # 配置獲取連接等待超時的時間 max-wait: 60000 # 打開PSCache,並且指定每個連接上PSCache的大小 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false
pom.xml
<resource> <directory>src/main/resources</directory> <includes> <include>application.yml</include> <include>application-${profiles.active}.yml</include> <include>config/application-*.yml</include> #需要特別註意需要額外把抽取好的公共yml include <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource>