一、基础语法
1. SpringBoot提供了2种配置文件类型:properteis 和 yml/yaml
2. 默认配置文件名称:application
3. 在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml
二、注意事项
1. 大小写敏感
2. 数据值前边必须有空格,作为分隔符
3. 使用缩进表示层级关系
4. 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。
三、数据格式
java
#############################数据格式####################################
# 字面量:普通的值 [ 数字,布尔值,字符串 ]
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
string: HelloWorld #字符串可以直接书写
# 数组:一组按次序排列的值( List、set )
address:
- 西安
- 上海
- 杭州
# 行内写法
commpany: [阿里巴巴,华为,腾讯,字节跳动]
# 对象、Map(键值对)
person1:
name: 小美
age: 19
sex: 女
# 行内写法
person2: {name: 大美,age: 18,sex: 女}
#对象数组格式一
users1:
- name: Tom
age: 4
- name: Jerry
age: 5
#对象数组格式二
users2:
-
name: Tom
age: 4
-
name: Jerry
age: 5
#对象数组缩略格式
users3: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]
#yaml引用
name: 271
persons:
name: 十个勤天
pet: ${name} # 引用上边定义的name值
age: ${random.uuid} # 配置文件占位符,随机uuid
四、Spring Boot注解的作用
1、@ConfigurationProperties 注解
提供了一种方便的方式,可以将配置文件中的属性映射到 Java对象的字段上。这样做的一个常见的方式是使用属性的前缀来进行匹配。
application.yml配置文件
java
# application.yml
myapp.database:
url: jdbc:mysql://localhost:3306/mydatabase
username: root
password: password
实体类:
java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "myapp.database")
public class DatabaseProperties {
private String url;
private String username;
private String password;
// Getters and setters
// toString()
// 可以在这里添加其他的业务逻辑
}
2、@Value 注解
使用 @Value 注解可以直接将配置文件中的属性值注入到 Spring Bean 中的字段或方法参数上。
application.yml配置文件
java
dog:
dname: 花花
dage: 4
实体类:
java
@Component
public class Dog {
@Value("${dog.dname}")
private String dname;
@Value("${dog.dage}")
private int dage;
// setter/getter/toString()方法
3.@Validated 注解
通常用于对输入数据进行校验。当在方法参数、方法返回值或类级别上使用
@Validated
注解时,Spring 会根据预先定义的校验规则来检查相关的数据是否有效。
java
//对个别属性进行输入校验
@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
@NotNull(message = "用户名称不能为空")
private String name;
@Email(message = "邮箱格式不正确")
private String email;
private String sex;
@NotNull(message = "用户年龄不能为空")
@Max(value = 150,message = "给年轻人留点机会吧")
private int age;
private Date birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
4、 @PropertySource 注解
使用 @PropertySource 注解可以在配置类中引入外部的属性文件。
java
//引入外部文件application.properties
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
@NotNull(message = "用户名称不能为空")
private String name;
@Email(message = "邮箱格式不正确")
private String email;
private String sex;
@NotNull(message = "用户年龄不能为空")
@Max(value = 150,message = "给年轻人留点机会吧")
private int age;
private Date birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
五、 application.yml 基础配置
1.逐一插入、批量插入
java
##########################逐个注入###################################
dog:
dname: 花花
dage: 4
##########################批量注入###################################
person:
name: 王一博
email: 123456789@qq.com
sex: 男
age: 27
birthday: 1997/8/5
maps: {k1: v1,k2: v2}
lists:
- code
- bodybuilding
- music
dog:
dname: summer
dage: 4
2.常见yml配置
java
# 服务器端口
server:
port: 8080
# 数据库连接配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydatabase
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
# 日志级别
logging:
level:
root: INFO
com.example.mypackage: DEBUG
# 应用程序自定义属性
myapp:
name: My Spring Boot App
version: 1.0
六、多个yml文件怎么使用?
修改端口号为例
1.application.yml(调用)
java
spring:
profiles:
active: dev
2.application-dev.yml
java
server:
port: 8082
3.application-test.yml
java
server:
port: 8081
4.验证:
原端口号(8081) ---------> 先端口号8082