SpringBoot多环境获取yml配置属性
目地:
探究 SpringBoot 框架,多配置环境下,获取配置项属性值的问题
问题:
1.项目中同时存在yml和properties配置文件,谁的优先级更高
2.如何获取配置文件中配置项的属性值
过程:
在实际项目的开发过程当中,有时需动态的获取当前配置环境的端口号
所以,首先看看如何获取配置文件中各配置项的属性值。
目前可以通过以下三种常用的方式获取配置的属性值。
方法一:使用@ConfigurationProperties(prefix = “配置项”)
方法二:使用@Value(“${配置项}”)
1.添加配置文件
application.properties
server.port= 8081
spring.profiles.active= dev
application.yml
server:
port: 8082
spring:
profiles:
active: prod
application-dev.properties
server.port= 8083
application-dev.yml
server.port= 8084
application-prod.properties
server.port= 8085
application-prod.yml
server.port= 8086
properties:主配置、dev、prod 分别配置端口号 8081、8083、8085
yml: 主配置、dev、prod 分别配置端口号 8082、8084、8086
2.创建配置类用来获取配置属性值
2.1 构造环境的配置类 EnvConfig
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 环境配置类
* */
@Component
//将该类注册bean到容器中
@ConfigurationProperties(prefix = "spring.profiles")//这里使用方法一
/**
*将该配置类中所有的属性
*与当前配置文件中 spring.profiles
*配置项下所有的配置进行绑定
*/
public class EnvConfig {
private String active;//当前激活的配置环境文件名
public EnvConfig() {