Skip to content

Springboot项目开发相关的配置文件说明


application.yml、security.ignore、xss.ignore三个配置文件的详细配置说明

本文目录

一、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常规配置

  • Mybatis的xml(sql语句),扫描配置
  • 实体类所在包,扫描配置
yaml
#mybatis-plus配置
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  type-aliases-package: com.kg.**.entity

1.4 自定义配置(重点!!!)

- 1.4.1 文件上传配置

  • 允许上传的文件格式(防止攻击类脚本文件上传)
  • 允许上传的图片格式(图片格式文件,会自动压缩文件大小)
  • 图片自动压缩,压缩比率
  • 文件上传物理路径
  • 隐藏上传路径
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.2 用户登录相关配置

  • 是否单例登录(默认false,如果为true则开启单例登录,后登录的会踢出前面登录的用户)
  • 登录是否需要验证码(false时,后端登录接口会自动跳过验证码判断)
  • 登录token的有效期(jwtToken的过期时间,默认120分钟)
yaml
com.kg:
  #登录常量配置
  login:
    #是否单例登录
    is-only-one: false
    #登录是否需要验证验证码
    is-yzm: true
    #jwtToken过期时限,单位:分钟
    jwt-token-expiry: 120

- 1.4.3 开发管理员配置

  • 把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.4 是否允许跨域

控制本项目的所有接口,是否允许跨域访问。

yaml
com.kg:
  #跨域配置,是否允许跨域:默认关闭(true开启;false关闭)
  cors-enable: false

- 1.4.5 操作日志保存天数

使用@AutoOperateLog注解的接口,会自动保存操作日志。
详见文档:常用功能 - 操作日志

  • 这些日志长期保存,会造成数据库表的资源浪费!因此后台增加了一个定时任务,定时清理超过指定天数的日志。
  • 该配置可以设置日志保留天数,超过该天数的日志会被清理。
yaml
com.kg:
  #默认操作日志,保存天数,默认:180天(定时任务自动删除旧日志)
  auto-operate-log: 180
  • 删除操作日志的定时任务,如下图所示: 删除操作日志的定时任务

- 1.4.6 验证码配置

  • 本项目验证码使用开源项目: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

- 1.4.7 Swagger配置

yaml
com.kg:
  #swagger相关配置
  swagger:
    enable: true
    title: "大树快速开发平台API"
    description: "基于swagger的Api接口信息"
    terms-of-service-url: "http://docs.java119.cn"
    version: "1.0.0"
    concat:
      name: "ziro"
      www: "http://docs.java119.cn"
      email: "877185959@qq.com"

说明

  • com.kg.swagger.enable = true 配置swagger是否开启
  • 默认开启。部署到生产环境时,建议关闭

- 1.4.8 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: dev
      clientSecret: qwer@123
      #回调地址
      redirectUri: http://localhost:8123/oauth2/client/login/code
      #第三方Oauth2服务端地址
      oauthServerUri: http://localhost:8123/
      #回调登录错误时,跳转前端错误页
      errorRouter: http://localhost:9527/#/oauth2/error
      #回调登录成功时,跳转前端成功页(处理本系统登录逻辑)
      successRouter: http://localhost:9527/#/oauth2/success

- 1.4.9 微信小程序配置

说明

  • 微信小程序,自动登录(获取用户openid)时使用
  • 微信小程序,扫码跳转小程序页面时使用
  • 微信小程序相关配置如下:
yaml
com.kg:
  #微信配置
  weixin:
    #小程序配置(其中accessTokenUrl、jsCodeUrl、qrCodeUrl如需自定义,在此处配置即可覆盖默认值)
    applet:
      appId: xxxxx
      secret: xxxxx

- 1.4.10 微信支付配置

说明

  • 微信商户号支付配置
  • 区分 v2 和 v3 的不同密钥版本
  • 对应代码在 module\src\main\java\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: http://www.xxxx.com/api/pay/wechat/payNotify

- 1.4.11 支付宝支付配置

说明

  • 支付宝商户支付配置
  • 对应代码在 module\src\main\java\com\kg\component\pay\alipay 文件夹
  • 包含功能: 扫码支付(当面付)、PC网站支付(跳转到支付宝界面)、移动网站支付(跳转到支付宝页面)、支付通知、 查询支付结果、查询退款结果(所有支付类型的退款查询接口都是一样的)
  • 支付宝支付相关配置如下:
yaml
com.kg:
  #支付宝支付配置
  alipay:
    #应用id
    appId: xxxxx
    #支付宝私钥
    privateKey: xxxxx
    #支付宝的公钥(注意:非应用公钥)
    aliPayPublicKey: xxxxx
    #支付结果通知地址(后台接口地址:http://www.xxxx.com/api/)
    notifyUrl: http://www.xxxx.com/api/pay/alipay/payNotify
    #支付返回地址
    returnUrl: http://www.xxxx.com/api/pay/alipay/returnUrl

- 1.4.12 阿里云短信配置

  • 集成阿里云短信,相关配置如下:
yaml
com.kg:
  #短信通知相关配置
  sms:
    aliyun:
      accessKeyId: xxxxx
      accessKeySecret: xxxxx
      endpoint: dysmsapi.aliyuncs.com
      sign: 短信签名xxxxx
  • 管理后台 - DEMO - 短信-demo 中,有一个发短信的demo模块:
    目前只集成了:阿里云短信

阿里云短信管理

  • 发送阿里云短信

阿里云短信管理-发送

  • 注意:短信发送前,需要在阿里云备案短信模板
    备案好的短信模板,在数据字典处维护,即可在 短信-demo 模块使用了

阿里云短信管理-短信模板

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>会被编译为&lt;p&gt;1&lt;/p&gt;
# 2. 解决方法1(建议):保存时编译存数据库,查询时用XssFormatUtil.toHtml()方法反编译(DEMO见/news/news/list第97行)
# 3. 解决方法2(不建议):在本文件配置忽略列表,如下一行去掉#就是忽略/news/news/add接口,忽略后该接口传递的任何数据都不编译
#/news/news/add