Javaプロジェクトプロファイルの読み込みの2つの方法

2451 ワード

一.OWNER API管理プロファイル
1.プロジェクトにownerのjarパッケージを導入する:owner-1.0.6-sources.jar,owner-java8-1.0.6-sources.jar
mavenプロジェクトならpomに直接xmlに追加:
     
            org.aeonbits.owner
            owner-java8
            1.0.6
     

必要に応じてバージョン番号を選択できます
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ディレクトリのプロファイル