需求场景
根底设施模块中有一些通用固定的根底装备。例如:日志的装备,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.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及日志规划的内容比较少。在此稍作总结,希望有帮助到有相似需求的人。