springboot按profile載入配置檔案放入靜態類
阿新 • • 發佈:2018-11-17
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,啟動指令碼引數是--形式