一 .OWNER API 管理配置文件
1.在项目中引入owner的jar包 :owner-1.0.6-sources.jar,owner-java8-1.0.6-sources.jar
若是maven项目,可直接在pom.xml中添加:
<dependency>
<groupId>org.aeonbits.owner</groupId>
<artifactId>owner-java8</artifactId>
<version>1.0.6</version>
</dependency>
可根据需要选择版本号
2.在项目的根目录下添加配置文件:Config.properties
port=80
hostname=lili
maxThreads=100
3.
import org.aeonbits.owner.Config;
import org.aeonbits.owner.Config.Sources;
@Sources({"file:~/.MyConfig.config", "file:/etc/MyConfig.config","classpath:MyConfig.properties" })
public interface MyConfig extends Config{
int port();
String hostname();
@DefaultValue("42")
int maxThreads();
}
@Sources中的参数为资源地址数组,可以选择多个,从多个文件中查找
4.测试
public static void main( String[] args )
{
MyConfig cfg = ConfigFactory.create(MyConfig.class);
System.out.println("---- " + cfg.hostname() + "---------" + cfg.port() +
" ------- " + cfg.maxThreads());
}
二. 根据ResourceBundle类读取配置文件
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import javax.servlet.ServletContext;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
public class Config {
private static ResourceBundle RESOURCE_BUNDLE;
private static BufferedInputStream inputStream;
public static String getString(String key) {
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext context = webApplicationContext.getServletContext();
String webappRoot = context.getRealPath("/");
File f = new File(new File(webappRoot, "WEB-INF"), "conf.properties");
try {
inputStream = new BufferedInputStream(new FileInputStream(f));
RESOURCE_BUNDLE = new PropertyResourceBundle(inputStream);
inputStream.close();
return RESOURCE_BUNDLE.getString(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
此种方法可读取
WEB-INF目录中的配置文件