1. SpringBoot 配置文件
1.1 配置文件的作用
配置文件中配置了项目中重要的数据, 例如:
- 数据库的连接信息 (用户名密码)
- 项目的启动端口
- 第三方系统的调用密钥等信息
- 用于发现和定位问题的普通日志和异常日志等
Spring Boot项目没有配置信息, 就不能连接和操作数据库, 甚至不能保存可以用于排查问题的关键日志. 所以配置文件非常重要.
1.2 配置文件的格式
在Spring Boot 中配置文件主要分为两种:
.properties
(主要是key=value格式).yml
(主要是key: value格式)
注意:
- 当项目中既有
.properties
和.yml
, 且两个配置文件中有相同的配置项, Spring Boot 会优先考虑.properties
, 因为.properties
的优先级更高一些. - 一个项目中允许存在两种不同的配置文件,
.properties
.yml
, 但是在项目中建议只使用一种配置文件的格式.
1.3 properties 配置文件说明
1.3.1 properties 基本语法
properties 是以 key=value
这种格式配置的.
server.port=9090
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/2022-6-1
spring.datasource.username=root
spring.datasource.password=1234
配置文件的注释信息使用 “#”
1.3.2 读取配置文件
读取配置文件的内容, 可以使用 @Value
注解来实现
@Value
注解使用 "${}"
的格式读取.
@Component public class Read implements InitializingBean { @Value("${server.port}") private String port; @Override public void afterPropertiesSet() throws Exception { System.out.println(); System.out.println(port); System.out.println(); } }
1.4 yml 配置文件说明
yml 是 YMAL 是缩写, 它的全称是 Yet Another Markup Language, 译为 另一种标记语言.
1.4.1 yml 基本语法
yml 是树形结构的配置文件, 它的基础语法是 key: value
, 这里的:
后面跟着一个空格.
server:
port: 9090
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/2022-6-1
username: root
password: 1234
1.4.2 yml 使用进阶
# ~代表null
null.value: ~
查看一段代码
string:
str1: Hello \n World
str2: 'Hello \n World'
str3: "Hello \n World"
读取yml中的这段代码
@Component public class Read1 implements InitializingBean { @Value("${string.str1}") private String str1; @Value("${string.str2}") private String str2; @Value("${string.str3}") private String str3; @Override public void afterPropertiesSet() throws Exception { System.out.println(); System.out.println("str1: "+str1); System.out.println("str2: "+str2); System.out.println("str3: "+str3); System.out.println(); } }
运行结果:
字符串加上双引号, 会执行\n 换行.
1.4.3 配置对象
yml 中配置对象
student:
id: 1
name: zhangsan
age: 18
读取配置的对象, 就需要用到另一个注解: @ConfigurationProperties
@Component @ConfigurationProperties("student") public class User { private int id; private String name; private int age; // 一堆getter setter }
读取
@Component public class Read2 implements InitializingBean { @Autowired private Student student; @Override public void afterPropertiesSet() throws Exception { System.out.println(); System.out.println(student); System.out.println(); } }
1.4.4 配置集合
yml 中 配置集合
mylist:
colors:
- RED
- GREEN
- BLACK
读取配置集合
@Component @ConfigurationProperties("mylist") public class MyList { private Listcolors; // 一堆getter 和 setter }
打印代码
@Component public class Read3 implements InitializingBean { @Autowired private MyList myList; @Override public void afterPropertiesSet() throws Exception { for (String val : myList.getColors()){ System.out.println(val); } } }
1.4.5 yml的另一种写法(行内写法)
配置对象
student: {id: 1,name: zhangsan,age: 18}
配置集合
mylist: {colors: [RED,GREEN,BLACK]}
1.5 properties 和 yml 比较
properties
的语法更复杂, yml
语法更简洁
yml通用性更好, 支持更多的语言, 如 Java, Go, Python等
yml支持更多的数据类型
yml格式的配置文件写的时候容易出错(在:之后有一个空格), 而properties写法传统比较复制,但不太容易出错
2. 读取 SpringBoot 配置文件的方法
2.1 使用 @Value 读取配置文件
只能读取一个
@Component public class Read implements InitializingBean { @Value("${server.port}") private String port; @Override public void afterPropertiesSet() throws Exception { System.out.println(); System.out.println(port); System.out.println(); } }
2.2 使用@ConfigurationProperties
直接在类上写
@Component @ConfigurationProperties("mylist") public class MyList { private Listcolors; public List getColors() { return colors; } public void setColors(List colors) { this.colors = colors; } }
2.3 @PropertySource读取指定配置文件
jdbc.username=root2
jdbc.password=root1
@Component @PropertySource(value = {"classpath:application.properties"}) public class JDBC implements InitializingBean { @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Override public void afterPropertiesSet() throws Exception { System.out.println(username + " " + password); } }
到此这篇关于Spring Boot详解配置文件的用途与用法的文章就介绍到这了,更多相关Spring Boot配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!