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,启动脚本参数是--形式