Spring Boot yml 公共抽取
背景
项目里面的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>