需求场景

根底设施模块中有一些通用固定的根底装备。例如:日志的装备,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文件中。怎么完成不同环境日志途径不一样?

想要达到的作用

  1. 复用根底设施模块中的固定装备。
  2. 区别多环境的装备。
  3. 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项目多层级多环境yml设计

此刻springboot会自动去找applicaiton-basic.ymlapplication-dev.yml文件。
所以咱们最终的装备文件是由applicaiton.yml+applicaiton-basic.yml+applicaiton-dev.yml叠加的装备。

日志的多环境装备,咱们能够新建一份logback-spring.xml文件。 假设咱们想要依据环境装备不同的日志途径。能够在例如application-dev.yml文件中装备logging.file.path。

SpringBoot项目多层级多环境yml设计
然后在logback-spring.xml文件中运用springProperty标签读取多环境yml中装备的途径。

SpringBoot项目多层级多环境yml设计

此刻日志的途径就会别离读取不同环境装备的途径了。

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

欢迎参加全栈技术交流群:1398880