springboot优雅的获取yml配置(区分生产环境和测试环境)

#首先配置Bean

import com.vivo.admin_log.common.utils.YamlConfigurerUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import java.util.Properties;

/**
 * @author 72038611
 */
@Configuration
public class BeanConfiguration {
    private final Logger logger = LoggerFactory.getLogger(BeanConfiguration.class);
    @Bean
    public YamlConfigurerUtil ymlConfigurerUtil() {
        //1:加载配置文件
        Resource app = new ClassPathResource("config/application.yml");
        Resource appDev = new ClassPathResource("config/application-dev.yml");
        Resource appProd = new ClassPathResource("config/application-prod.yml");
        YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
        // 2:将加载的配置文件交给 YamlPropertiesFactoryBean
        yamlPropertiesFactoryBean.setResources(app);
        // 3:将yml转换成 key:val
        Properties properties = yamlPropertiesFactoryBean.getObject();
        String active = properties.getProperty("spring.profiles.active");
        if (active == "" || active == null) {
            logger.error("未找到spring.profiles.active配置!");
        }else {
            //判断当前配置是什么环境
            if ("dev".equals(active)) {
                yamlPropertiesFactoryBean.setResources(app,appDev);
            }else if("prod".equals(active)){
                yamlPropertiesFactoryBean.setResources(app,appProd);
            }
        }
        // 4: 将Properties 通过构造方法交给我们写的工具类
        YamlConfigurerUtil ymlConfigurerUtil = new YamlConfigurerUtil(yamlPropertiesFactoryBean.getObject());
        return ymlConfigurerUtil;
    }
}

#工具类

import java.util.Properties;

/**
 * @author 72038611
 */
public class YamlConfigurerUtil {
    private static Properties ymlProperties = new Properties();
 
    public YamlConfigurerUtil(Properties properties){
        ymlProperties = properties;
    }
 
    public static String getStrYmlVal(String key){
        return ymlProperties.getProperty(key);
    }
 
    public static Integer getIntegerYmlVal(String key){
        return Integer.valueOf(ymlProperties.getProperty(key));
    }
}

改编自https://blog.csdn.net/xiao______xin/article/details/86700939#comments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值