springboot 读取 yml 配置的几种方式

本文介绍了在Spring Boot项目中如何读取YML配置文件,包括YML的文件规则、数据格式,以及四种获取YML文件内容的方法:@Value、@ConfigurationProperties、@Environment和@PropertySource结合@ConfigurationProperties。同时,文章还提到了YML多环境配置的设置。


前言

在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springboot 中读取 yml 配置的几种方式.


一、Yml文件规则及数据格式表示方式

key: value 格式书写
key 后面跟着冒号,再后面跟着一个空格,然后是值

  1. 普通类型(数字,字符串,布尔)
  2. 对象、Map
  3. 数组(List)

1、普通类型(数字,字符串,布尔)

age: 18
name:	小明
isright: true

注意:

字符串默认不用加上单引号或者双引号;
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

2、对象、Map

k: v的方式

#方式一:
person:
	name: 小强
	age: 18

#方式二:
person: {name: 小qiang,age: 19 }

3、 数组(List)

用- 值表示数组中的一个元素,如:

myList:
	- week1
	- week2
	- 18

二、获取YML文件内容

YML文件内容application.yml:

##自定义全局配置属性
mywebconfig:
  name: xiaoqiang
  age: 18
  mail: qqqq@qq.com
  Person:
    code: 12345
    name: pppp1

1.第一种:@Value方式

通过@Value获取配置属性赋值给配置类属性

@Data
@Configuration
//配置类
public class MyWebConfig {
    @Value("${mywebconfig.name}")
    private String name;
    
    @Value("${mywebconfig.age}")
    private Integer age;
    
    @Value("${mywebconfig.mail}")
    private String mail;
    
    @Value("${mywebconfig.person}")
    private Person person;

}

测试:

    @Test
    void myTest(){
        System.out.println(
                myWebConfig.getName()
        );
    }

2.第二种:@ConfigurationProperties

通过在配置类上添加@ConfigurationProperties注解绑定yml配置属性取值

@Data
@Configuration
@ConfigurationProperties(prefix = "mywebconfig")
public class MyWebConfig {
    private String name;

    private Integer age;

    private String mail;
    
    private Person person;

}

测试:

3.第三种:@Evnironment

使用原生方法直接获取配置类数据

@RestController
@RequestMapping("/deptment")
public class DeptMentController {
    
    @Autowired
    Environment env;

    /**
     * 通过环境变量注解获取YML属性值
     * */
    @RequestMapping("/getP")
    public String getP() {

        return env.getProperty("mywebconfig.Person.name" );
    }

}

4.第四种:@PropertySource 结合@ConfigurationProperties 获取指定yml文件中的配置属性

注意:
SpringBoot的 @PropertySource 注解只支持加载 properties结尾的文件。

三、YML多环境配置设置

#多配置环境下,激活环境dev
spring:
  profiles:
    active: dev
---
#测试环境
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: gq861204.
    driver-class-name: com.mysql.cj.jdbc.Driver

  config:
    activate:
      on-profile: test

server:
  port: 10088
---
#开发环境
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: gq861204.
    driver-class-name: com.mysql.cj.jdbc.Driver

  config:
    activate:
      on-profile: dev
server:
  port: 10089
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值