web-dev-qa-db-ja.com

Java app.configと同等ですか?

.NETのApp.Configに相当するJava)はありますか?

そうでない場合は、アプリケーションの設定を保持して、アプリの配布後に変更できるようにする標準的な方法はありますか?

24
Omar Kooheji

WebAppの場合、web.xmlを使用してアプリケーション設定を保存できます。

それ以外に、 Properties クラスを使用してプロパティファイルの読み取りと書き込みを行うことができます。

また、システムとユーザーの設定の読み取りと書き込みに使用される Preferences クラスも確認することをお勧めします。これは抽象クラスですが、userNodeForPackage(ClassName.class)およびsystemNodeForPackage(ClassName.class)を使用して適切なオブジェクトを取得できます。

17
Powerlord

Propertiesクラスを使用するという@Powerlordの提案(+1)をサンプルコードに入れるには:

public class SomeClass {
    public static void main(String[] args){
        String dbUrl = "";
        String dbLogin = "";
        String dbPassword = "";     
        if (args.length<3) {
            //If no inputs passed in, look for a configuration file
            URL configFile = SomeClass.class.getClass().getResource("/Configuration.cnf");
            try {
                InputStream configFileStream = configFile.openStream();
                Properties p = new Properties();
                p.load(configFileStream);
                configFileStream.close();

                dbUrl      = (String)p.get("dbUrl");
                dbLogin    = (String)p.get("dbUser");
                dbPassword = (String)p.get("dbPassword");               
            } catch (Exception e) {  //IO or NullPointer exceptions possible in block above
                System.out.println("Useful message");
                System.exit(1);
            }
        } else {
            //Read required inputs from "args"
            dbUrl      = args[0];
            dbLogin    = args[1];
            dbPassword = args[2];           
        }
        //Input checking one three items here
        //Real work here.
    }
}

次に、コンテナのルート(jarファイルの先頭など)にファイルを配置しますConfiguration.cnf次の内容で:

#Comments describing the file
#more comments
dbUser=username
dbPassword=password
dbUrl=jdbc\:mysql\://servername/databasename

これは完璧ではありませんが(改善を聞きたいと思います)、現在のニーズには十分です。

9
Pursuit

簡単な方法は、すべての設定を含むプロパティファイル(myapp.propertiesなど)を用意することです。これは、設定を行うための非常に高度な方法ではありませんが、十分です。または、独自のXMLベースの設定を行うか、から取得することもできます。データベースなど.

2
JeeBee