TODO:可以将配置文件内容放入静态代码块,这样只加载一次就可以
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public abstract class PropUtil
{
private PropUtil()
{
super();
}
//读取环境变量的值
public static String getFromEnv(String key)
{
return System.getenv(key);
}
//读取配置文件的值 TODO
public static String getFromProperties(String key)
{
List<Resource> resources = new ArrayList<>();
resources.add(new ClassPathResource("application.properties"));
resources.add(new ClassPathResource("application-test.properties")) ;
for (int i = 0; i < resources.size(); i++)
{
Properties properties = new Properties();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resources.get(i).getInputStream()));
properties.load(bufferedReader);
if (null == properties.get(key))
{
continue;
}else {
return (String)properties.get(key);
}
} catch (Exception e) {
continue;
}
}
return null;
}
//读取环境变量的值,为null则返回默认值
public static String getFromEnv(String key, String defaultValue)
{
if (null == getFromEnv(key))
return defaultValue;
return System.getenv(key);
}
//读取配置文件的值,为null则返回默认值 TODO
public String getFromProperties(String key, String defaultValue)
{
if (null == getFromProperties(key))
return defaultValue;
return "";
}
//先读环境变量,环境变量为null再读配置文件
public static String getProperties(String key)
{
if (null == getFromEnv(key))
{
return getFromProperties(key);
}else
{
return getFromEnv(key);
}
}
//先读环境变量,环境变量为null,再读配置文件,配置文件也为null则返回默认值
public static String getProperties(String key, String defaultValue)
{
if (null == getFromEnv(key))
{
if (null == getFromProperties(key)) {
return defaultValue;
}else {
return getFromProperties(key);
}
}else
{
return getFromEnv(key);
}
}
}