环球播报:SpringBoot项目多层级多环境yml设计

需求场景

基础设施模块中有一些通用固定的基础配置。例如:日志的配置,Spring本身的配置以及MyBatis Plus相关的固定配置等等。 这些配置往往与环境无关,如何复用?


【资料图】

# 日志配置logging:  level:    # 记得配置到包名    com.agileboot: debug    org.springframework: info  pattern:    console: "%date %thread %green(%level) [%cyan(%logger{10}):%magenta(%line)] %red(%method) | %msg%n"# Spring配置spring:  # 文件上传  servlet:     multipart:       # 单个文件大小       max-file-size:  10MB       # 设置总上传的文件大小       max-request-size:  20MB  mvc:    pathmatch:      matching-strategy: ANT_PATH_MATCHER  jackson:    deserialization:      fail-on-unknown-properties: false    serialization:      write-dates-as-timestamps: false    date-format: yyyy-MM-dd HH:mm:ss复制代码

基础设施模块中还有一些独立于环境的配置。例如Mysql和Redis或者MQ之类的。如何区分环境?

# 数据源配置spring:    # redis 配置    redis:        # 地址        host: localhost        # 端口,默认为6379        port: 36379        # 数据库索引        database: 0        # 密码        password: 12345        # 连接超时时间        timeout: 10s        lettuce:            pool:                # 连接池中的最小空闲连接                min-idle: 0                # 连接池中的最大空闲连接                max-idle: 8                # 连接池的最大数据库连接数                max-active: 8                # #连接池最大阻塞等待时间(使用负值表示没有限制)                max-wait: -1ms复制代码

日志相关的配置我们一般都配在logback.xml文件中。如何实现不同环境日志路径不一样?

想要达到的效果

复用基础设施模块中的固定配置。 区分多环境的配置。 logback日志引入多环境配置。

详细代码实现在开源项目Agileboot中:github.com/valarchie/A…

实现

假设我们有一个Admin模块,我们可以给它定义一份application.yml文件。文件中描述该模块特定的配置。比如端口,访问路径之类的。

# 开发环境配置server:  # 服务器的HTTP端口,默认为8080  port: 8080  servlet:    # 应用的访问路径    context-path: /  tomcat:    # tomcat的URI编码    uri-encoding: UTF-8    # 连接数满后的排队数,默认为100    accept-count: 1000    threads:      # tomcat最大线程数,默认为200      max: 800      # Tomcat启动初始化的线程数,默认值10      min-spare: 100# Spring配置 如果需要无Mysql  无Redis直接启动的话  dev改为test# 生产环境把dev改为prodspring:  profiles:    active: basic,dev复制代码

在基础设施模块中新建 applicaiton-basic.yml,配置一些与环境无关的基础固定复用配置。 application-dev.yml,配置一些和环境相关的配置,例如数据库的配置。

然后在spring.profiles.active配置中指定basic和dev文件。

此时springboot会自动去找 applicaiton-basic.yml application-dev.yml 文件。 所以我们最终的配置文件是由 applicaiton.yml + applicaiton-basic.yml + applicaiton-dev.yml 叠加的配置。

日志的多环境配置,我们可以新建一份logback-spring.xml文件。 假设我们想要根据环境配置不同的日志路径。可以在例如application-dev.yml文件中配置logging.file.path。

然后在logback-spring.xml文件中使用 springProperty 标签读取多环境yml中配置的路径。

此时日志的路径就会分别读取不同环境配置的路径了。

关于多层级多环境的yml及日志设计的内容比较少。在此稍作总结,希望有帮助到有类似需求的人。

原文链接:https://juejin.cn/post/7205171975647215676

关键词:

推荐DIY文章
主机存在磨损或划痕风险 PICO4便携包宣布召回
穿越湖海!特斯拉Cybertruck电动皮卡可以当“船”用
vivoXFold+折叠旗舰开售 配备蔡司全焦段旗舰四摄
飞凡R7正式上市 全系标配换电架构
中兴Axon30S开售 拥有黑色蓝色两款配色
荣耀MagicBookV14 2022正式开售 搭载TOF传感器
it