springboot按profile加载配置文件放入静态类

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.PropertiesLoaderUtils;

public class PropertiesUtil{
    
    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);

    private static Map<String, String> properties;
    private final static String defaultProfile = "dev";
    
    public static synchronized void loadProperties(String[] args) throws Exception{
        if(args==null||args.length<1){
            loadProperties(defaultProfile);
            return;
        }
        String profile = defaultProfile;
        for(String arg:args){
            if(arg.startsWith("--spring.profiles.active=")){
                profile = arg.substring(25);
            }
        }
        loadProperties(profile);
    }
    
    /**根据profile,加载所有配置文件*/
    public static synchronized void loadProperties(String profile) throws Exception{
        if(properties!=null){
            return;
        }
        properties = new HashMap<>();
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = resolver.getResources("classpath:*.properties");
        String str = "";
        for(Resource r:resources){
            String filename = r.getFilename();
            if(filename.startsWith("application-")&&!filename.equals("application-"+profile+".properties")){
                continue;
            }
            Properties p = new Properties();
            PropertiesLoaderUtils.fillProperties(p, r);
            for(String key:p.stringPropertyNames()){
                properties.put(key, p.getProperty(key));
            }
            str += ","+filename;
        }
        if(str.length()>1){
            logger.info("LOAD PROPERTIES:"+str.substring(1));
        }
        
    }
    public static String get(String key){
        return properties.get(key);
    }
    
    
    
}

在启动类中调用,传入参数是main方法的args,启动脚本参数是--形式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值