前言
配置文件的使用会从 properties 开始介绍,后介绍 yml 和 读取配置文件
properties
使用properties配置的格式,缺点不易阅读
# 设置控制台日志的输出格式
logging.pattern.console = %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n
# 设置文件日志的输出格式
logging.pattern.file = %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n
# 设置日志文件的名称以及保存的位置
logging.file.name = logs/test.log
# 设置日志的默认输出级别
logging.level.root = info
# 设置滚动日志(默认的滚动策略是文件大小结合日期进行滚动)
# ${LOG_FILE}引用springboot默认文件输出位置
logging.logback.rollingpolicy.file-name-pattern = ${LOG_FILE}.%d{yyyy-MM-dd}.%i.log
# 设置滚动日志的大小(默认10MB)
logging.logback.rollingpolicy.max-file-size = 20MB
# 保留滚动日志的历史天数(默认只保存近7天的日志文件)
logging.logback.rollingpolicy.max-history = 30
# 一直保持彩色日志(例如在单元测试中输出的日志)
spring.output.ansi.enabled = always
yml
yml是一种主流的资源配置文件,具有缩进功能,阅读性更好,
每个父子节点使用冒号分隔,赋值的节点冒号后一定要有空格
spring:
output:
ansi:
#一直保持彩色日志
enabled: always
# 日志设置
logging:
pattern:
# 设置控制台日志的输出格式
console: "%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n"
file:
# 设置日志文件的名称以及保存的位置
name: logs/test.log
level:
# 默认输出级别
root: info
# logback滚动日志设置
logback:
rollingpolicy:
# 日志文件保留的历史天数
max-history: 30
# 滚动文件大小
max-file-size: 20MB
读取配置文件
yml数据绑定示例
值绑定
使用@Value注解精确指定节点的名称
@Component
@Data
public class Student {
//使用@Value注解和SPEL表达式将yml的节点值绑定到类的字段上
@Value("${student.userId}")
private Integer stuId;
@Value("${student.userName}")
private String stuName;
@Value("${student.age}")
private Integer age;
}
松散绑定
使用@ConfigurationProperties注解,松散绑定只需要指定节点的前缀即可,子节点在yml中可以依据约定
使用驼峰模式(如:userName)、"-"线(如:user-name)、或者全大写加下划线(如:USER_NAME)进行绑定即可
@Component
@Data
@ConfigurationProperties(prefix = "student")
public class Student {
//使用@Value注解和SPEL表达式将yml的节点值绑定到类的字段上
private Integer userId;
private String userName;
private Integer age;
private Card card;
private List<Integer> tels;
private Map<String,Integer> score;
private List<Teacher> teachers;
}
@Data
class Teacher {
private String name;
private Integer age;
}
@Data
class Card {
private Integer cardNum;
}
配置文件
# 数据值绑定
student:
userId: 1001
user-name: user
age: 21
card:
card-num: 330444
# 绑定array、list、set集合,多个值使用逗号分隔,
# 或者使用"-"线换行分隔
tels: #13509876543, 18689098765
- 93045983
- 93045983
# 绑定map
score:
s: 75
ss: 24
ssr: 1
# 绑定复杂类型(集合中包含对象)
teachers:
- name: cq
age: 18
- name: sb
age: 16