Appearance
Springboot 配置文件说明
一、application.yml配置文件
1.1 springboot常规配置
- 端口、上下文、编码格式等
yaml
#端口
server:
port: 8123
servlet:
#上下文
context-path: /
#编码格式
encoding:
enabled: true
charset: UTF-8
force: true
#编码格式
tomcat.uri-encoding: UTF-8
1.2 spring常规配置
- 上传文件限制大小
- Mysql 数据库连接配置
- Redis 连接配置
- Spring Mvc 配置
- Thymeleaf 静态文件配置
yaml
#端口
spring:
#上传文件修改限制大小
servlet.multipart:
max-request-size: 100MB
max-file-size: 10MB
#数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
database.type: mysql
url: jdbc:mysql://39.107.157.91:13306/dashu_frame_open?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
username: dashuopen
password: dashuopen@123
#Redis配置
redis:
host: localhost
port: 6379
password:
database: 0
mvc:
# 解决swagger2冲突,导致启动报错问题(@See:https://blog.csdn.net/mapboo/article/details/121568519)
pathmatch.matching-strategy: ant_path_matcher
#thymeleaf配置
thymeleaf:
enabled: true
prefix: classpath:/static/
suffix: .html
encoding: UTF-8
cache: false
1.3 mybatis-plus常规配置
- 1.3.1 基础配置
- Mybatis的xml(sql语句),扫描配置
- 实体类所在包,扫描配置
yaml
#mybatis-plus配置
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: com.kg.**.entity
- 1.3.2 修改xml热加载
- enabled: true 开启热加载,false关闭热加载
- xml文件所在包位置,扫描配置
yaml
#mybatis热加载xml配置(注意:正式上线建议关闭,enabled: false)
mybatis-xml-reload:
enabled: true
mapper-locations: classpath*:/mapper/**/*.xml
1.4 自定义配置(重点!!!)
- 1.4.1 页面地址和api接口地址
- 后台管理页面地址 和 对应的api接口地址
- 其他配置有对这2个配置的依赖,比如:com.kg.weixin.pay.notifyUri(微信支付结果通知地址)
yaml
com.kg:
#配置本项目 页面地址 和 api接口地址
vueBaseUrl: http://localhost:9526
apiBaseUrl: ${com.kg.vueBaseUrl}/dashuserver
- 1.4.2 文件上传配置
- 允许上传的文件格式(防止攻击类脚本文件上传)
- 允许上传的图片格式(图片格式文件,会自动压缩文件大小)
- 图片自动压缩,压缩比率
- 文件上传物理路径
- 隐藏上传路径
yaml
com.kg:
#文件上传配置
file:
#允许上传的文件格式(防止攻击类脚本文件上传,以|结尾)
allow-extend: jpg|jpeg|png|gif|bpm|mp3|mp4|doc|docx|xls|xlsx|pdf|zip|rar|txt|
#允许上传的图片格式(图片需要压缩,格式必须正确,以|结尾)
image-extend: jpg|jpeg|png|gif|bpm|
#图片自动压缩,压缩比率(0-1之间的小数,例如:0.6表示压缩为60%)
image-quality: 0.6
#文件上传物理路径(文件保存的物理绝对路径;不要使用\;若使用docker部署,要配置容器内部路径,一般是/usr/local/springboot/))
save-path: /usr/local/springboot/myupload/files
#文件路径映射(对外访问的路径,通过spring映射到物理路径;不要使用\;要在security.ignore放开)
url-pre: /upload
- 1.4.3 登录相关配置
- 是否单例登录(默认false,如果为true则开启单例登录,后登录的会踢出前面登录的用户)
- 登录是否需要验证码(false时,后端登录接口会自动跳过验证码判断)
- 登录token的有效期(jwtToken的过期时间,默认120分钟)
yaml
com.kg:
#登录常量配置
login:
#是否单例登录
is-only-one: false
#登录是否需要验证验证码
is-yzm: true
#jwtToken过期时限,单位:分钟
jwt-token-expiry: 120
- 1.4.4 开发管理员配置
- 把z_user表中的user_id,开发管理员的id字符串,多个开发管理员用英文逗号隔开
yaml
com.kg:
#开发管理员配置 (所有开发管理员的ids,多个用逗号隔开)
developer-user-ids: 1
在Java类LoginConstant.java中,通过@Value注解,把配置的值赋值给静态变量:DEVELOPER_USER_IDS
因此,使用 LoginConstant.DEVELOPER_USER_IDS 就是所有开发管理员的userIds
java
/**
* 配置:开发管理员userIds
*/
public static String DEVELOPER_USER_IDS;
@Value("${com.kg.developer-user-ids}")
public void setDeveloperUserIds(String userIds) {
LoginConstant.DEVELOPER_USER_IDS = userIds;
}
- 同时LoginConstant.java类还提供了:
java
/**
* 判断 userId 是否开发管理员
*
* @param userId 用户id
* @return boolean 是否开发管理员
*/
public static boolean isDeveloper(String userId) {
return (LoginConstant.DEVELOPER_USER_IDS + ",").contains(userId + ",");
}
- 1.4.5 跨域配置
- 控制本项目的所有接口,是否允许跨域访问。
- 可以单独配置允许跨域的域名、请求类型、及允许跨域访问的api资源
详见文档:常用功能 - 跨域配置
yaml
com.kg:
#跨域配置
cors:
#是否允许跨域:false不允许;true允许(根据下方配置匹配跨域规则)
enabled: true
#允许跨域的域名:*表示全部允许;多个用逗号隔开,支持localhost、支持端口,例如:"http://localhost:8080,https://xxx.cn"
allowed-origins: "*"
#允许跨域请求方法:*表示全部允许;多个用逗号隔开,例如:"GET,POST"
allowed-methods: "*"
#允许跨域访问的api资源:/**表示全部允许;多个用逗号隔开,例如:"/api1/**,/api2/**"
allowed-patterns: "/**"
- 1.4.6 操作日志保存天数
使用@AutoOperateLog注解的接口,会自动保存操作日志。
详见文档:常用功能 - 操作日志
- 这些日志长期保存,会造成数据库表的资源浪费!因此后台增加了一个定时任务,定时清理超过指定天数的日志。
- 该配置可以设置日志保留天数,超过该天数的日志会被清理。
yaml
com.kg:
#默认操作日志,保存天数,默认:180天(定时任务自动删除旧日志)
auto-operate-log: 180
- 删除操作日志的定时任务,如下图所示:
- 1.4.7 组织机构最大层级
配置组织机构最大层级数,-1表示不限制层级数。
yaml
com.kg:
#组织机构最大层级(-1表示无限级)
max-org-level: 3
- 1.4.8 验证码配置
- 本项目验证码使用开源项目:easy-captcha
- 可进行如下配置:(注释很全,不再详细说明)
- 详细使用方法见文档:验证码
yaml
com.kg:
#验证码配置
captcha:
#类型枚举 ARITHMETIC-算数;CHINESE-中文;CHINESE_GIF-中文闪图;GIF-闪图;SPEC-常规
type: ARITHMETIC
#有效期 分钟
expiration: 10
#内容长度
length: 4
#图片宽高
width: 163
height: 49
#字体样式
font-family: Default
font-size: 20
#0正常、1加粗、2斜体
font-style: 0
#字体颜色(如:FFFFFF 允许为空,颜色随机)
font-color:
#背景色(如:FFFFFF 允许为空,透明图无背景色;注意:闪图不支持透明背景色)
bg-color:
- 1.4.9 Swagger配置
- Swagger的使用,详见文档:常用功能 - Swagger使用
- Swagger相关配置,可进行如下配置:
yaml
com.kg:
#swagger相关配置
swagger:
enable: true
title: "大树快速开发平台API"
description: "基于swagger的Api接口信息"
terms-of-service-url: "https://docs.java119.cn"
version: "1.0.0"
concat:
name: "ziro"
www: "https://docs.java119.cn"
email: "877185959@qq.com"
说明
- com.kg.swagger.enable = true 配置swagger是否开启
- 默认开启。部署到生产环境时,建议关闭
- 1.4.10 Oauth2 配置
Oauth 2.0 的使用,详见文档:
常用功能 - Oauth2使用
Oauth2 服务端配置:
- 是否开启 Oauth2 服务,默认开启
yaml
com.kg:
#oauth2配置
oauth2:
#服务端,是否启动(true/false)
server.enable: true
Oauth2 客户端配置:
yaml
com.kg:
#oauth2配置
oauth2:
#客户端信息配置(作为Oauth2的客户端,集成第三方Oauth2统一认证登录时使用)
client:
clientId: xxx
clientSecret: xxx
#回调地址
redirectUri: ${com.kg.apiBaseUrl}/oauth2/client/login/code
#第三方Oauth2服务端地址
oauthServerUri: ${com.kg.apiBaseUrl}/
#回调登录错误时,跳转前端错误页
errorRouter: ${com.kg.vueBaseUrl}/#/oauth2/error
#回调登录成功时,跳转前端成功页(处理本系统登录逻辑)
successRouter: ${com.kg.vueBaseUrl}/#/oauth2/success
#回调登录成功,但首次登录时,跳转到绑定用户界面
userBindRouter: ${com.kg.vueBaseUrl}/#/oauth2/bind
- 1.4.11 微信小程序配置
说明
- 微信小程序,自动登录(获取用户openid)时使用
- 微信小程序,扫码跳转小程序页面时使用
- 详细使用方法见文档:微信小程序
- 微信小程序相关配置如下:
yaml
com.kg:
#微信配置
weixin:
#小程序配置(其中accessTokenUrl、jsCodeUrl、qrCodeUrl如需自定义,在此处配置即可覆盖默认值)
applet:
appId: xxxxx
secret: xxxxx
- 1.4.12 微信支付配置
说明
- 微信商户号支付配置
- 区分 v2 和 v3 的不同密钥版本
- 对应代码所在包 com.kg.component.pay.wechat
- 包含功能:
NATIVE - 扫码支付、H5 - 移动端浏览器(非微信客户端),调起微信H5支付、JSAPI - 微信客户端内,调起微信支付、 支付回调、查询支付结果、退款、查询退款结果
- 微信商户号支付相关配置如下:
yaml
com.kg:
#微信配置
weixin:
#微信支付(商户号)配置(WxPayConfig.java)
pay:
#微信绑定的公众号appId
#商户号只能绑定:已通过微信认证的服务号、政府或媒体类订阅号、小程序、企业微信、移动应用、网站应用
appId: xxxxx
#商户号mchId
mchId: xxxxx
#当前密钥版本(v2/v3)
keyVersion: v2
#商户号v2密钥
partnerKey: xxxxx
#证书p12地址(v2退款时需要)
certP12Path: pems/apiclient_cert.p12
#商户号v3密钥
partnerKeyV3: xxxxx
#证书pem地址(v3时需要)
certPath: pems/apiclient_cert.pem
#私钥pem地址(v3时需要)
keyPath: pems/apiclient_key.pem
#支付结果通知地址(后台接口地址:http://www.xxxx.com/api/)
notifyUrl: ${com.kg.apiBaseUrl}/pay/wechat/payNotify
- 1.4.13 支付宝支付配置
说明
- 支付宝商户支付配置
- 对应代码所在包 com.kg.component.pay.alipay
- 包含功能: 扫码支付(当面付)、PC网站支付(跳转到支付宝界面)、移动网站支付(跳转到支付宝页面)、支付通知、 查询支付结果、查询退款结果(所有支付类型的退款查询接口都是一样的)
- 支付宝支付相关配置如下:
yaml
com.kg:
#支付宝支付配置
alipay:
#应用id
appId: xxxxx
#支付宝私钥
privateKey: xxxxx
#支付宝的公钥(注意:非应用公钥)
aliPayPublicKey: xxxxx
#支付结果通知地址
notifyUrl: ${com.kg.apiBaseUrl}/pay/alipay/payNotify
#支付返回地址
returnUrl: ${com.kg.apiBaseUrl}/pay/alipay/returnUrl
- 1.4.14 阿里云短信配置
- 集成阿里云短信,相关配置如下:
yaml
com.kg:
#短信通知相关配置
sms:
aliyun:
accessKeyId: xxxxx
accessKeySecret: xxxxx
endpoint: dysmsapi.aliyuncs.com
sign: 短信签名xxxxx
- 在 管理后台 - DEMO - 短信-demo 中,有一个发短信的demo模块:
目前只集成了:阿里云短信
- 发送阿里云短信
- 注意:短信发送前,需要在阿里云备案短信模板
备案好的短信模板,在数据字典处维护,即可在 短信-demo 模块使用了
- 1.4.15 消息队列RabbitMQ
说明
- enable:是否启用
- 消息队列相关使用类,所在包:com.kg.component.rabbitmq
yaml
com.kg:
#rabbitmq配置
rabbitmq:
#是否启用
enable: true
#连接信息
host: xxx.xxx.xxx.xxx
port: 5672
username: xxxx
password: xxxx
- 1.4.16 DDoS防护配置
说明
- 接口异常频繁请求时,有可能时DDoS攻击,因此需要配置DDoS防护
- 建议:生产环境开启,开发环境关闭
yaml
com.kg:
#DDoS防护配置
ddos:
#是否启用
enable: true
#下面2个配置,结合使用(例如:5分钟内,限制200次请求)
#限制时间(单位:分钟)
time: 5
#限制时间内请求限制次数
limit: 200
- 1.4.17 阿里云OSS配置
说明
- 阿里云OSS文件上传、下载、访问相关配置
- 工具类所在包:com.kg.component.oss.aliyun
yaml
com.kg:
oss:
aliyun:
#阿里云子账号AccessKey和Secret(至少要有oss权限和sts权限)
accessKeyId: xxxxxx
accessKeySecret: xxxxxx
endpoint: oss-cn-shanghai.aliyuncs.com
bucket: xxx
#上传地址,格式:https://bucketname.endpoint
host: https://xxx.oss-cn-shanghai.aliyuncs.com
#单次上传凭证的有效期,单位:秒
uploadTokenExpire: 300
#回调地址(oss上传成功后,回调到本系统的地址)
callbackUrl: ${com.kg.apiBaseUrl}/oss/client/upload/callback
#访问域名(默认和上传域名相同,若单独配置了域名,需在此处修改)
domain: ${com.kg.oss.aliyun.host}
#临时访问凭证有效期,单位:秒
stsExpire: 300
1.5 项目输出日志配置
说明
- 输出日志配置,代码如下
- 日志级别,详细级别依次是 trace/debug/info/warn/error
yaml
#输出日志配置(日志级别:trace/debug/info/warn/error)
logging.level:
root: info
com.kg: info
二、security.ignore配置文件
默认所有后端资源(接口/静态资源等/Servlet等)都会经过 Spring Security 的过滤器拦截,进行统一的权限判断。
如果想跳过权限判断(如:登录接口、验证码接口等)
则通过该配置文件配置 security 的忽略列表。
- 配置文件:security.ignore
yaml
# 1.支持用#注释,
# 2.支持用**模糊匹配
# 登录登出接口
/login/login
/login/logout
# 验证码
/captcha/get
# 验证码
/captcha/get
三、xss.ignore配置文件
默认所有后端接口,都会经过 XSS攻击 过滤器拦截,处理xss攻击代码,保障系统安全。
如果想跳过 Xss 过滤
则通过该配置文件配置 xss 拦截过滤器忽略列表。
- 配置文件:xss.ignore
yaml
# 1.支持用#注释,
# 2.支持用**模糊匹配
# 忽略列表(全部忽略:/**)
# 表单代码生成器
/generator/code/byform
# 上传附件相关链接
/upload/**
# 关于富文本接口的说明
# 1. 富文本内容,默认会被编译,如:<p>1</p>会被编译为<p>1</p>
# 2. 解决方法1(建议):保存时编译存数据库,查询时用XssFormatUtil.toHtml()方法反编译(DEMO见/news/news/list第97行)
# 3. 解决方法2(不建议):在本文件配置忽略列表,如下一行去掉#就是忽略/news/news/add接口,忽略后该接口传递的任何数据都不编译
#/news/news/add
四、fileTypeMap.properties配置
properties
# 初始化:常见文件头hash信息(同一扩展名,允许出现多个hash值!)
# 注意:目前的文件头map可能不完整,如果文件类型判断失败,请自行测试,并把新的文件头,放到最后
# 格式:hash|扩展名
49492a00227105008037|tif
424d228c010000000000|bmp
...
# 有可能出现同一文件头对应多个扩展名的情况,扩展名用逗号隔开,如下
# MS Excel 注意:2003版word、msi和excel的文件头一样
d0cf11e0a1b11ae10|doc,vsd,xls,wps,ppt
# 新版word、excel、ppt等,文件头一样
504B0304|docx,xlsx,pptx,zip,jar