@Author:By Runsen
原文:https://maoli.blog.csdn.net/article/details/103435577
在这里插入图片描述
resources文件夹中目录结构
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
application.properties
或application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
在这里插入图片描述
在这里插入图片描述
YAML中允许表示三种格式,分别是常量值,对象和数组
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
属性和值也是大小写敏感;
"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "zhangsan \n lisi"
:输出;zhangsan 换行 lisi
'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’
:输出;zhangsan \n lisi
#即表示url属性值;
url: https://www.baidu.con
#即表示server.host属性的值;
server:
host: https://www.baidu,com
#数组,即表示server为[a,b,c]
server:
- 120.168.117.21
- 120.168.117.22
- 120.168.117.23
#常量
pi: 3.14 #定义一个数值3.14
hasChild: true #定义一个boolean值
name: '你好YAML' #定义一个字符串
maps: {k1: v1,k2: 12}
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。
SpringBoot的配置文件有yml和properties两种
@Component 组件必须是容器中的组件 @ConfigurationProperties(prefix = "person")
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
ALT+INS
添加属性和toString方法
public class Dog {
private String name;
private Integer age;
}
在spring入门添加@ComponentScan("com.atguigu")
找到对应的Component
在pom.xml
文件中导入文件处理器
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在这里插入图片描述
注意导入模块
import org.junit.Test;
@RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {
@Autowired
Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
在这里插入图片描述
对应的yml
person:
lastName: hello
age: 18
a
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 12
@Component
public class Person {
//last-name和lastName一样
@Value("${person.last-name}")
private String lastName;
@Value("#{11*2}")
private Integer age;
@Value("true")
private Boolean boss;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
}
在这里插入图片描述
在这里插入图片描述
通过@ConfigurationProperties获取值
可以检验数据
但是@Value获取值
没有报错
在这里插入图片描述
在这里插入图片描述
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties
;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述