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改为prod
spring:
profiles:
  active: basic,dev

在基础设施模块中新建

applicaiton-basic.yml,配置一些与环境无关的基础固定复用配置。

application-dev.yml,配置一些和环境相关的配置,例如数据库的配置。

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

此时springboot会自动去找applicaiton-basic.ymlapplication-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及日志设计的内容比较少。在此稍作总结,希望有帮助到有类似需求的人。

以上就是SpringBoot项目多层级多环境yml设计详解的详细内容,更多关于SpringBoot多层级多环境yml的资料请关注编程宝库其它相关文章!

 Dubbo架构消费者:调用提供者,但是不能直接调,需要借助注册中心节点角色说明Provider:暴露服务的服务提供方Container: 服务运行容器Consumer: 调用远程服务的服务消费方Regis ...