Java 配置文件
2026/7/13大约 5 分钟
Java 服务我们主要使用 spring cloud 框架,配置文件分为两部分:jar 内配置文件(application.yml)、存储在配置中心内的配置文件(通用的数据源配置文件 - datasource.yaml、应用专属配置文件 - ${应用名}.yaml)。
应用配置文件(application.yml)
应用程序端口
每个应用程序的端口是固定的,详情查看内部文档,配置方式如下:
server:
port: 8000应用名称
每个应用程序的名称是固定的,详情查看内部文档,配置方式如下:
spring:
application:
name: basic-paper-gateway注册中心与配置中心
注册中心和配置中心我们都是用 nacos,不同环境区分使用 namespace,我们一般不会使用到 group,所以不用配置,使用默认值即可。配置方式如下所示:
spring:
cloud:
nacos:
discovery:
server-addr: @nacos.addr@
namespace: @nacos.namespace@ # 命名空间,用于注册中心、配置中心的数据隔离(在同一个注册中心负责多个环境时极其重要),只读取此命名空间下的配置文件。
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
config:
import:
- nacos:core.yaml?refreshEnabled=true
- nacos:datasource.yaml?refreshEnabled=false
- nacos:redis.yaml?refreshEnabled=false日志存储配置
日志框架我们使用 logback,可以直接在配置文件中配置,配置方式如下所示:
提示
这是目前的方案,以后融合日志收集和告警系统后可能会有修改
logging:
file:
path: @logging.filePath@ # 日志文件输出路径,请配置物理磁盘,防止日志写入延迟导致程序卡顿
bak-path: @logging.fileBakPath@ # 日志文件备份路径,可以配置网盘路径,用于备份使用
name: ${logging.file.path}/${spring.application.name}.log # 日志的名称,非必要请勿修改
charset:
console: UTF-8 # 日志控制台输出编码,非必要请勿修改
file: UTF-8 # 日志文件编码,非必要请勿修改
logback:
rollingpolicy:
file-name-pattern: ${logging.file.bak-path}/${spring.application.name}/${HOSTNAME}/%d{yyyy-MM-dd}/${spring.application.name}.%d{yyyy-MM-dd}.%i.log.gz # 日志备份完整路径,非必要请勿修改
max-file-size: 50MB # 每个日志文件最大大小,非必要请勿修改
clean-history-on-start: true # 是否清理日志,非必要请勿修改
max-history: 90 # 日志留存数量,由于按照日期存储的日志,所以这里可以理解为日志留存时间
pattern:
dateformat: yyyy-MM-dd HH:mm:ss.SSSXXX # 日期格式化,请勿修改关闭堆栈信息返回
关闭 spring boot 当出现请求错误时(如:4xx 等错误)从接口中返回堆栈信息。(只有 SpringBoot 3 需要配置,SpringBoot 4 已经是默认关闭)
server:
error:
include-stacktrace: neverRedis 存储前缀
命名规则为:bp:${模块名}:
simperfect:
redis:
redis-prefix: 'bp:customer:'mybatis 配置
mybatis:
configuration:
map-underscore-to-camel-case: true # 下划线自动转换为驼峰
jdbc-type-for-null: null
pagehelper:
reasonable: true # 是否启用分页合理化;如果启用,当pageNum<1时,会自动查询第一页的数据,当pageNum>pages时,自动查询最后一页数据;
use-sqlserver2012: true # 当使用 SqlServer 数据库时使用 SqlServer2012 数据库分页方式
count-column: '*' # 用于配置自动 count 查询时的查询列,默认值0,也就是 count(0),Page 对象也新增了 countColumn 参数,可以针对具体查询进行配置。
mapper:
resolve-class: com.simperfect.commons.mapper.resolve.JakartaEntityResolve # 配置解析器为我们自定义的解析器,使其支持 Jakarta API时间日期格式化
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
mvc:
format:
date-time: yyyy-MM-dd HH:mm:ss
date: yyyy-MM-dd
time: HH:mm:ss数据源过滤器配置
数据源过滤器是通过 http 请求来切换数据源,有些模块可能不需要,可以配置关闭,如:登录模块
simperfect:
datasource:
dynamic:
datasource-interceptor-enabled: false # 是否启用数据源拦截器,登录模块不需要过滤器,关闭即可行为验证码配置
有些模块可能需要行为验证功能,如:登录模块
captcha:
# 如果项目中使用到了redis,滑块验证码会自动把验证码数据存到redis中, 这里配置redis的key的前缀,默认是captcha:slider
prefix: 'sp:bp:sso:captcha:slider'
# 验证码过期时间,默认是2分钟,单位毫秒, 可以根据自身业务进行调整
expire:
# 默认缓存时间
default: 60000
# 针对 点选验证码 过期时间设置为 2分钟, 因为点选验证码验证比较慢,把过期时间调整大一些
WORD_IMAGE_CLICK: 20000
# 使用加载系统自带的资源, 默认是 false
init-default-resource: false
cache:
# 缓存控制, 默认为false不开启
enabled: true
# 验证码会提前缓存一些生成好的验证数据, 默认是20
cacheSize: 20
# 缓存拉取失败后等待时间 默认是 5秒钟
wait-time: 5000
# 缓存检查间隔 默认是2秒钟
period: 2000
secondary:
# 二次验证, 默认false 不开启
enabled: true
# 二次验证过期时间, 默认 2分钟
expire: 120000
# 二次验证缓存key前缀,默认是 captcha:secondary
keyPrefix: 'sp:bp:sso:captcha:secondary'定时任务线程池配置
有些模块需要 spring 定时任务功能,需要配置线程池内线程数量。一般情况下 25 个线程足够了,如果真的对任务的实时性要求非常高,那么可以增大线程数。如:任务调度模块
spring:
task:
scheduling:
pool:
size: 25