-
配置文件
springboot使用一个全局的配置文件,配置文件名称是固定的。
application.properties
- 语法结构为 key=value
applicaition.yml
修改springboot自动配置的默认值,因为springboot在底层进行了相当多的自动配置。
- 比如可以在配置文件中修改tomcat启动的默认端口号
yaml概述
yaml 是”YAML Ain’t a Markup Language” yaml不是一种标记语言的跌贵缩写,在开发的这种语言时,yaml的意思其实是 Yet Another Markup Language”(仍是一种标记语言)
这种语言以数据操作为中心,而不是以标记语言为重点
以前的配置文件,大多数都是xml来进行配置,比如一个简单的端口配置,对比一下yml和xml的区别
<server>
<port>8081<port>
</server>
yaml配置
server:
prot: 8080
yaml基础语法
语法要求严格
字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号
`k: v
注意
下面来一行写对象的属性与值的关系
student:
name: addicated
age: 3
行内写法
`student: {name: addicated,age: 3}
数组(list,set)
用 - 值表示数组中的一个元素,比如
pets:
- cat
- dog
- pig
行内写法
例子:修改springboot默认端口
server:
port: 8082
yaml文件更强大的地方在于,可以直接给实体类进直接注入匹配值。通过这个特性,可以实现yaml注册配置信息到javaconfig类来统筹配置信息。
yaml注入配置文件
- 在springboot项目中的resources目录下面新建一个application.yml文件
- 编写一个实体类Dog ```java package com.kuang.springboot.pojo;
@Component //注册bean到容器中 public class Dog { private String name; private Integer age;
//有参无参构造、get、set方法、toString()方法
}
- 思考,原来是如何给bean注入属性值的,使用value注解直接在属性上注明
```java
@Component //注册bean
public class Dog {
@Value("阿黄")
private String name;
@Value("18")
private Integer age;
}
- 在springboot的测试类进行输出 ```java @SpringBootTest class DemoApplicationTests {
@Autowired //将狗狗自动注入进来
Dog dog;
@Test
public void contextLoads() {
System.out.println(dog); //打印看下狗狗对象
}
}
- 编写一个复杂的实体类来进行测试 person类
```java
@Component //注册bean到容器中
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;
//有参无参构造、get、set方法、toString()方法
// 或者直接使用 lombok注解
}
使用yaml哦诶值方式进行注入,编写一个yml配置
person:
name: addicated
age: 3
happy: false
birth: 2000/01/01
maps: {k1: v1,k2: v2}
lists:
- code
- girl
- music
dog:
name: 旺财
age: 1
之后进行注入
/*
@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
*/
@Component //注册bean
// 这里如果爆红的话是 因为springboot的注解处理器没有找到,顺着提示会找到一个依赖
@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;
}
导入即可
<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
以上都确认没有问题之后,进行测试
注意
如果配置文件的key值和属性的值设置不一样,则结果输出为null,注入失败
加载指定的配置文件
@PropertySource注解:加载指定的配置文件
@ConfigurationProperties注解 : 默认从全局配置文件中获取值 ```java // 方式2 // 加载指定的配置文件 // javaConfig 绑定配置文件的值可以采取上面这些方式。 @PropertySource(value=”classpath:addicated.properties”) // 会在根目录下去寻找对应的properties @Validated // 数据校验 public class Person {// SPEL 表达式取出配置文件中的配置 // @Value(“${name}”)
// JSR303 提供的验证注解,message可指定验证错误时返回的文本
// @Email(message=”邮箱格式错误”)
private String name;
private Integer age;
private boolean happy;
private Date birth;
private Map