springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean

配置文件

springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第1张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第2张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第3张图片

中间有个空格,注意!

YAML语法

在这里插入图片描述
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第4张图片
我们要看三种值的表示方法
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第5张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第6张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第7张图片
在这里插入图片描述
都是要注意中间的空格

yaml使用

配置文件注入

如果语法没问题,底下会有提示
配置文件
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第8张图片
javaBean
Component注解,把组件放入spring容器
prefix就是指明前缀,对象要和配置文件中那些属性映射
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第9张图片
我们可以导入配置文件处理器,以后编写配置就有提示了

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency>        
<groupId>org.springframework.boot</groupId>            
<artifactId>spring‐boot‐configuration‐processor</artifactId>            
<optional>true</optional>            
</dependency>

测试
注意springBoot新版中,测试类默认就是使用的spring的Runner,所以不用在开头加注解@RunWith(SpringRunner.class)
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第10张图片
最后运行测试就可以获取注入的值
在这里插入图片描述

在properties配置文件中配置

springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第11张图片
properties配置文件在idea中默认utf-8可能会乱码
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第12张图片
这里我指定properties文件在运行时,会将UTF-8编码转变成ASCII码
这是就不会出现中文乱码
在这里插入图片描述

@Value注解获取值

除了@ConfigurationProperties可以从配置文件获取值
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第13张图片
在这里插入图片描述

@Value获取值和@ConfigurationProperties获取值比较

springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第14张图片

配置文件yml还是properties他们都能获取到值;

@ConfigurationProperties支持松散语法绑定,下面的写法都可以获取到值

springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第15张图片

@ConfigurationProperties支持配置文件注入值数据校验

在成员上加@Email注解,就会数据校验,此时lastName必须是邮箱格式,否则报错
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第16张图片

@Value注解不支持复杂类型封装

springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第17张图片
报错
在这里插入图片描述

适时选择这两个注解

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

@PropertySource&@ImportResource&@Bean

1、@PropertySource 加载指定的配置文件

我们默认的配置是在全局配置文件application.yml中,
但是,像javaBean的这种配置信息,如果都写在全局配置文件,显然不合适
所以就把这部分配置从springBoot全局配置中抽离,放到其他的配置文件,比如person.properties
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第18张图片
这样找的就是指定的配置文件
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第19张图片
在这里插入图片描述

2、@ImportResource 导入Spring的配置文件,让配置文件里面的内容生效

springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第20张图片
在主配置文件中加ImportResource注解,使得自定义的配置文件生效
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第21张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第22张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第23张图片

但是SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式

所以我们使用
@Configuration指明当前类是配置类,替代配置文件
默认使用的组件id就是方法名称
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第24张图片
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第25张图片
主配置类去掉注解,此时使用的就是定义的配置类
springBoot03_配置文件:yaml、值的写法、配置文件注入、@ConfigurationProperties、@Value、@ImportResource、@Bean_第26张图片

你可能感兴趣的:(springBoot)