问题导入
在开发中 我们有开发环境 、测试环境、 生产环境 每次打包都要手动去改ip 端口号 密码等配置 是非常麻烦的 所以有了对环境配置 通过maven 实现
- yaml文件多环境启动
在实际开发中,项目的开发环境、测试环境、生产环境的配置信息是否会一致?如何快速切换?
1. 首先这pom 文件里添加配置
<profiles>
<profile>
<id>dev</id>
<activation>
<!-- 默认激活-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profiles.active>dev</profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
我这里只配置了两个 如配置其他的参考prod 默认 maven 使用dev
2. application.yml 配置文件
将公共的配置抽出来 就是不需要改IP 获取端口号 密码等到配置信息抽出来 公共的配置
server:
port: xxxxx
servlet:
# 应用的访问路径
context-path: /
multipart:
enabled: true #开启文件上传
max-file-size: 100MB #限制文件上传大小为10M
max-request-size: 100MB
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100
# Spring配置
spring:
messages:
basename: i18n/messages
profiles:
active: @profiles.active@
servlet:
multipart:
enabled: true
max-file-size: 20MB
max-request-size: 1000MB
重点是 @profiles.active@
3. application-dev.yml 配置文件
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.xx.xx:xxxx/xxxx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: xxxx
password: xxxxx
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username:
login-password:
filter:
config:
# 是否配置加密
enabled: false
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
data:
mongodb:
uri: mongodb://192.168.xx.xx:xx/xxxxxx
multipart:
# 单个文件大小
max-file-size: 100GB
# 设置总上传的文件大小
max-request-size: 100GB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 192.168.x.xx
# 端口,默认为6379
port: xxxx
# 数据库索引
database: x
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
application-prot.yml 同理
4. Maven 使用
在打包或者运行项目的时候 勾选你想要的环境就行了