springboot 中 yml 配置注入:原理解释

1、springboot的配置文件

Springboot有一个全局的配置文件,配置文件的名是固定的。

application.properties : key=value

appication.yml: key: 空格 value

配置文件的作用:修改SpringBoor自动配置的默认值。底层探究—>

1.1 yml概述

YAML (YAML Ain't a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等
-------------------------------约定-----------------------------------------
k: v 表示键值对关系,冒号后面必须有一个空格
使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
大小写敏感
缩进时不允许使用Tab键,只允许使用空格。
松散表示,java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。
-----------------------------------键值关系-----------------------------------
(以java语言为例,其它语言类似)对于键与值主要是看能否表示以下内容。普通的值(数字、字符串、布尔)、日期、对象、数组、集合等。

比较传统的xml和yml

<server>
	<port>8080</port>
</server>
server:
 port: 8080

2、注入配置文件

2.1 yaml 注入配置文件

2.1.1 原始的注入值

​ 1、编写一个pojo包下的实体类(简单的)

@Component
public class Student {
    @Value("Ryan")
    private String name;
    private String email;
    private String sex;
    private Integer age;
    .....
}

​ 2、原始通过 @Value 注解给bean注入属性值

@SpringBootTest
class SpringBootymlApplicationTests {
    @Autowired
    private Student student;
    @Test
    void contextLoads() {
        System.out.println(student);
    }
}

​ 3、测试一下

在这里插入图片描述

2.1.2 使用yaml的方式注入

​ 1、在springboot项目中resources 目录下新建一个文件application.yml

person:
  name: lxx
  age: 3
  happy: false
  birth: 2021/01/01
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - girl
    - music
  student:
    name: JJ

​ 2、编写一个pojo包下的实体类(复杂的)

@Component //注册bean到容器中
@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 Student student;
}


​ 3、原始通过 @Value 注解给bean注入属性值

@ConfigurationProperties(prefix = "person")
  导入一下依赖坐标
<dependency>   
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

4、测试一下

@SpringBootTest
class SpringBootymlApplicationTests {

    @Autowired
    private Person person;

    @Test
    void contextLoads() {
        System.out.println(person);
    }
}

在这里插入图片描述

解释@ConfigurationProperties:

/*
	@ConfigurationProperties 的作用:
       (1)将配置文件配置的每一个属性值,映射到这个组件中。
       (2)告诉springboot将本列多有的属性和配置文件中相关的配置进行绑定
       (3)参数 prefix=“XXX” ;和配置文件中XXX下面的属性一一对应
       
*/

IDEA 提示,springboot配置注解处理器没有找到,导入一个依赖;

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

在这里插入图片描述

2.1.3 加载指定的配置文件

@PropertySource: 加载指定的配置文件@ConfigurationProperties: 默认从全局文件中获取值

测试:

​ 1、在resources目录下新建一个person.properties文件

​ 2、指定代码中加载person.properties文件

name=Austin

​ 3、输出测试:

使用properties配置文件在写中文的时候,会出现中文乱码l

在idea中settings–>FileEncodings 中配置
在这里插入图片描述

2.2 比较 @ConfigurationProperties 和 @Value的总结

在这里插入图片描述

配置yml和配置properties都可以获取到值 , 强烈推荐 yml;如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!

2.2.1 松散语法

什么是松散的语法?
在这里插入图片描述

​ 1、创建一个实体类

​ 2、配置yml文件

​ 3、测试一下

可以自行测试

2.2.2 JsR303数据校验

如何使用?

Springboot 中可以使用@Validated来校验数据,如果数据异常则会抛出以上,方便异常的统一处理

案例:email 格式:

作用: 使用数据校验,可以确保数据的正确性

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;

空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.
    
Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false  
    
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.

日期检查
@Past       验证 DateCalendar 对象是否在当前时间之前  
@Future     验证 DateCalendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则

3、多环境切换

3.1不同环境的配置

profile是Spring对不同环境提供不同的配置功能的支持,可以通过激活不同的环境版本,实现快速切环境。

#启动springBoot,配置环境,使用  debug: true 来查看
spring:
  profiles:
    active: 
例如:
application-test.yml: 代表测试环境的配置
application-dev.yml:  代表开发环境配置
默认是主配置文件:application.yml

3.2配置文件加载的位置

优先级高到底:

项目路径下的config文件夹配置文件-->项目路径下配置文件--->资源路径下的config文件夹配置文件--->资源路径下配置文件

指定位置加载配置文件:

通过spring.config.location来改变默认的配置文件位置
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值