标签:springboot 配置文件 wcy dog private yaml import 狂神 name
Spring官方文档:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html (这里和老师一起看的2.1.6的,但是实际项目用的最新的2.6.6)
1、yaml文件格式
# yaml文件对空格要求十分严格,没有空格可能就报错
# yaml文件可以注入到配置类中
# 普通的key-value
name: wcy
# 对象
student1:
name: wcy
age: 24
# 对象行内写法
student2: {name: wcy,age: 3}
# 数组
pet1:
- cat
- dog
- pig
# 数组行内写法
pet2: [cat,dog,pig]
server:
port: 8080
2、yaml文件注入配置类
首先看没有yaml是怎么配置属性的
Dog类
package com.wcy.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dog {
@Value("旺财")
private String name;
@Value("3")
private Integer age;
}
测试类
package com.wcy;
import com.wcy.pojo.Dog;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot01ConfigApplicationTests {
@Autowired
private Dog dog;
@Test
void contextLoads() {
System.out.println(dog);
}
}
有了yaml之后呢?
application.yaml
person:
name: wcy
age: 3
happy: false
birth: 2022/4/09
maps: {k1: v1,k2: v2}
lists:
- code
- music
- girl
dog:
name: 旺财
age: 3
Person类,@ConfigurationProperties(prefix = "person") 通过这个注解和yaml配置文件参数一一绑定
package com.wcy.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
这个注解会报红(不影响使用),按找提示加依赖就好了
编译器弹出提示:
3、yaml格式的优势
* 松散绑定:yaml配置文件中和配置类中的属性不一定要完全一致,例如first-name和firstName也是可以复赋值的,比较智能
* SpEl就是 ${properties配置文件中属性名},这个yaml也用不上
* JSR303简单的来说就是通过注解规定属性的格式,如果实际值不符合会报错,如下图
Person类—JSR303数据校验
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person")
@Validated // 数据校验
public class Person {
private String name;
@Email
private String email;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
4、多配置文件
当有多个配置文件需要切换的时候,可以使用下面这样的方法
applicationcontext.yaml:
spring:
profiles:
active: test
---
dog:
name: 旺财
spring:
profiles: dev
---
dog:
name: 富贵
spring:
profiles: test
console:
Dog(name=富贵)
也可以使用不同的yaml文件,applicationcontext-test.yaml这样命名就可以了,具体参考官方文档;
https://docs.spring.io/spring-boot/docs/2.6.6/reference/htmlsingle/#features.external-config.files.multi-document
标签:springboot,配置文件,wcy,dog,private,yaml,import,狂神,name 来源: https://www.cnblogs.com/wcyblogs/p/16142152.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。