Spring Boot 配置文件解析

发布于:2025-07-21 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、前言

SpringBoot 使用一个全局的配置文件,配置文件名固定的;

·application.properties

·application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

YAMLYAML Ain't Markup Language

YAML A Markup Language:是一个标记语言

YAML isn't Markup Language:不是一个标记语言;

标记语言:

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以数据为中心,比jsonxml等更适合做配置文件;

二、YAML语法

 

 2.1基本语法

k:(空格)v: 表示一对键值对(空格必须有);

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一层级的

属性和值也是大小写敏感 

2.2 值的写法

字面量: 普通的值(数字,字符串,布尔)

k: v: 字面直接来写

字符串默认不用加上单引号或者双引号

"":双引号,会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name: "zhangsan \n lisi": 输出; zhangsan 换行 lisi

'':单引号;不会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name:' zhangsan \n lisi': 输出; zhangsan \n lisi 

2.3 对象、数组、Map(属性和值)(键值对)

 

在下一行来写对象的属性和值的关系;注意缩进

对象:(还是k: v的方式)


 

行内写法 (注意空格)

数组:

 

 

Map :

三、配置文件值注入 

3.1 使用@ConfigurationProperties将值注入到属性中

application.yml配置文件的内容:

server:
  port: 8082

Person:
  last_name: "xiaobai \n xxx"
  age: 21
  birth: 2025/09/22
  boss: false
  maps: {k1: shuai,k2: ku}
  lists:
   -lisi
   -zhaoliu
  dog: {name: Snax,age: 12}

 

javaBean:

我们可以导入配置文件处理器,以后编写配置就有提示了

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

我们编写一个测试类, 

    @Autowired
    private Person person;

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

 发现yml里面配置的内容给到了Person类的属性了

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

3.2.1松散绑定:

 

通过@ConfigurationProperties方法注入值

Person类里的LastName属性 和yml文件中的名字不一样,照样能够注入成功

但是@Value注解必须要精准匹配yml里的键值,才能注入值

 

3.2.2  SpEL表达式

@Value支持计算表达式

 

但是@ConfigurationProperties不支持 

3.2.3 数据校验

我们可以新加一个email属性,并对email属性进行依次数据校验

给email 赋值

分别用这两种注入方式查看结果:

 

@ConfigurationProperties报错了,说明支持数据校验

@Value 直接打印了结果,说明它根本没有数据校验这回事

 

3.2.4 复杂类型封装

复杂类型指的是 Map、对象等类型

我们是直接在yml文件里赋值的,@Vaue无法干这件事

 

3.2.3  @PropertySource @ImportResource @Bean

@PropertySource: 加载指定的配置文件

 

person.properties文件中的内容:

person.lastName=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

运行一下:

说明person.properties文件里的相应值注入了Person里的属性中 

@ImportResource

导入Spring的配置文件,让配置文件里面的内容生效;

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;

想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

 在主程序中引入注解,使Bean.xml生效

配置一下Bean.xml吧

我们引入了alibaba中的Druid连接池 

此时我们去测试类里测试,连接池是否引入成功?

 

发现引入成功

还有一种方法,我们在Spring框架中想引入一个配置文件是这样引入的
 

    @org.junit.Test
    public void test() {
        ApplicationContext context = new AnnotationConfigApplicationContext(UserProxy.class);
        UserService userService = (UserService) context.getBean("userserviceimpl");
        userService.save();
    }

 

在这里我们用同样的思路验证是否引入了druid连接池

验证: 

引入成功! 

ok,今天小编就分享到这里,希望对你的学习有所帮助哦


网站公告

今日签到

点亮在社区的每一天
去签到