文章目录
- 1.格式
- 2. 执行顺序
- 3. 内容
- 3.1. spring配置
- 3.2. 数据源配置
- 3.3. mybatis扫描配置
- 3.4. 开发环境配置
- 3.5. 热部署
- 3.6. 引入别的配置文件
- 3.7. pageHelper分页插件
- 3.8. shiro配置
- 3.9. xss
- 3.10. 代码生成
1.格式
- .properties: 通过.来连接,最后用"="来赋值,结构上,没有分层的感觉,但比较直接
# 数据库配置
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName= com.mysql.jdbc.Driver
spring.datasorce.url=jdbc:mysql://localhost:3306/spring-boot-frame?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
#端口配置
server.port=8081
- .yml: 每一级用换行来进行分层,层级感比较强,可读性强,最值得注意的最后key赋值的":"后需要留一个空格,不然没办法赋值,在启动项目的时候会报错
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring-boot-frame?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
2. 执行顺序
- 在两种文件同时存在的情况下,默认会先加载yml文件,然后加载properties文件进行覆盖,个人习惯使用yml文件作为配置文件。
- 不同的目录层级也会有加载顺序,默认是 1 > 2 > 3 > 4(个人认为是先加载了4然后被3覆盖,以此类推,就像yml先被加载然后被覆盖,没有实验过,也没找到相应的文章)通常项目会放在4位置,
3. 内容
3.1. spring配置
- 这里注意一下,在3.1和3.4中也有spring,所以必须是在同一个spring下的,即他们应该同一个层级下,如果像我这样配置的全部到一个yml文件中就会报错
# Spring配置
spring:
# 模板引擎
thymeleaf:
mode: HTML
encoding: utf-8
# 禁用缓存
cache: false
# 资源信息
messages:
# 国际化资源文件路径
basename: static/i18n/messages
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
profiles:
active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
3.2. 数据源配置
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://119.23.138.111:3306/momapp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: ichen123
# 从库数据源
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:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
3.3. mybatis扫描配置
# MyBatis
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ichen.**.entity
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mybatis/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
- 这里的typeAliasesPackage别名配置是为了在xml中的resuletType可以省略前面的路径
<select id="getUsers" resultType="com.ichen.frame.entity.User">
<!-- 如果配置了上面的别名就不需要写全路径 -->
<select id="getUsers" resultType="User">
- mapperLocations这里不配置的话,就会默认去mapper接口类的所在的包中去找
3.4. 开发环境配置
server:
# 服务器的HTTP端口,默认为80
port: 8088
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数,默认为200
max-threads: 800
# Tomcat启动初始化的线程数,默认值25
min-spare-threads: 30
3.5. 热部署
#热部署
spring:
# 服务模块
devtools:
restart:
# 热部署开关
enabled:true
3.6. 引入别的配置文件
# application-druid.yml的前缀一定要和主在配置文件application.yml的名字一致
sring:
profiles:
# 这里如果是多个文件可以用逗号隔开
include: druid
又或者是
# application-druid.yml的前缀一定要和主在配置文件application.yml的名字一致
sring:
profiles:
# 这里如果是多个文件可以用逗号隔开
active: druid
- 这两者是有一定的区别,这里我引用别人的文章,写的很清楚,链接:点我,同时做个copy,以防文章消失
application.properties文件内容
spring.profiles.active=test4
pring.profiles.include=test3,test5
version=1
name=Tom
appliction-tes2.properties文件内容
pring.profiles.include=test3,test4
version=2
appliction-test3.propertiest文件内容
version=3
name=Allen
appliction-test4.propertiest文件内容
name=Jim
application-test5.propertiest文件内容
version=5
name=Ifty
总结
无参启动例如
java -jar example.jar
先加载application.properties文件
最终version=5,name=Jim
有参启动例如
java -jar example.jar --spring.profiles.active=test2
先加载application-test2.properties文件,再加载application.properties文件
最终version=2,name=Ifty
总结:
多个配置文件中有同一个值,以下情况获取值的效果:
1.启动命令不带--spring.profiles.active参数以application.properties首先启动
按顺序所有文件第一个配置的spring.profiles.active属性中指定的最后一个文件中含有该属性的值为准
如果所有文件都没有spring.profiles.active,那么以pring.profiles.include配置的最后一个属性文件中的值为准
2.启动命令带--spring.profiles.active参数以参数指定的属性文件首先启动
此情况,已命令指定的配置文件中的值为准,其他文件中再配置spring.profiles.active也不会生效,如果不存在值,那么会以pring.profiles.include指定的最后一个文件中的值为准
简要说
启动命令spring.profiles.active指定文件中的值 > 文件中spring.profiles.active指定的文件列表中最后一次出现的值 > 文件中spring.profiles.include指定的文件列表中最后一次出现的值
(注意:无论是否配置启动命令参数指定文件,最后都会加载application.properties,它里边配置的信息也很关键)
- 那为什么有active使用呢,因为项目在不同环境下的配置会所有不同,比如开发环境,沙箱环境,正式环境等的数据库,redis,端口不同,就可以这样配置。
- 使用的话,我们可以将3.2,3.3,3.4的配置放在相应的yml文件中,在启动的时候指定使用什么配置文件,就可以达到多配置的目的。
3.7. pageHelper分页插件
# PageHelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
3.8. shiro配置
# Shiro
shiro:
user:
# 登录地址
loginUrl: /login
# 权限认证失败地址
unauthorizedUrl: /unauth
# 首页地址
indexUrl: /index
# 验证码开关
captchaEnabled: false
# 验证码类型 math 数组计算 char 字符
captchaType: math
cookie:
# 设置Cookie的域名 默认空,即当前访问的域名
domain:
# 设置cookie的有效访问路径
path: /
# 设置HttpOnly属性
httpOnly: true
# 设置Cookie的过期时间,天为单位
maxAge: 30
session:
# Session超时时间,-1代表永不过期(默认30分钟)
expireTime: 30
# 同步session到数据库的周期(默认1分钟)
dbSyncPeriod: 1
# 相隔多久检查一次session的有效性,默认就是10分钟
validationInterval: 10
# 同一个用户最大会话数,比如2的意思是同一个账号允许最多同时两个人登录(默认-1不限制)
maxSession: -1
# 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户
kickoutAfter: false
3.9. xss
#
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice/*
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
3.10. 代码生成
# 代码生成
gen:
# 作者
author: ichen
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ichen.project.system
# 自动去除表前缀,默认是true
autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: i_