最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【天天播资讯】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文件中。如何实现不同环境日志路径不一样?


(资料图)

想要达到的效果

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

详细代码实现在开源项目Agileboot中:https://github.com/valarchie/AgileBoot-Back-End

实现

假设我们有一个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.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及日志设计的内容比较少。在此稍作总结,希望有帮助到有类似需求的人。

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

关键词: 基础设施 技术交流 文件大小