2016-06-19 6 views
1

私は、次のコードロードプロパティ

private Resource resource = new ClassPathResource("/config.properties"); 
    private Properties properties = PropertiesLoaderUtils.loadProperties(resource); 
    private List<String> connectionParameters = Arrays.asList(properties.getProperty("connection").split(",")); 

を使用して、私のJavaアプリケーション内のファイルからプロパティをロードしています。しかし、私はロード後に再び呼ばれるように、このコードをたくありませんconnectionParametersへのプロパティ私はロードロジックをもう一度呼び出す必要はなく、アプリケーションが生存している限り、リストを有効にして利用可能にします。

これを行う方法はありますか?

答えて

1

あなたは、単に彼らは一度だけとして次のクラスの初期化時に初期化されることを保証するために、静的フィールドにそれらのフィールドを変換することができクラスがClassLoaderで初期化されたときに一度だけ初期化/実行されます。

+0

しかし、クラスインスタンスが作成されるたびに、そのコードは再び呼び出されませんか? –

+0

ClassLoaderによって初めてクラスがロードされるときだけではなく、 –

+0

素晴らしい、それは目的を解決します。 –

5

singletonを使用して1回だけ読み込むことができます。実際静的フィールドと静的ブロックである

private static final Resource resource = new ClassPathResource("/config.properties"); 
private static final Properties properties = PropertiesLoaderUtils.loadProperties(
    resource 
); 
private static final List<String> connectionParameters = Arrays.asList(
    properties.getProperty("connection").split(",") 
); 

+0

いいです、ありがとう。他の答えでさえ意味があり、使いやすくなっています。 :-) Upvoted。 –