2016-06-19 20 views
1

我從我的Java應用程序的文件使用下面的代碼負載性質的影響到應用程序中只通過了整個應用程序一次

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

加載的屬性,但我不希望這個代碼,一旦我加載再次調用將屬性導入connectionParameters我不想再次調用加載邏輯,並且只要應用程序處於活動狀態,我就希望列表處於活動狀態並可用。

有沒有辦法做到這一點?

回答

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(",") 
); 

事實上靜態領域和靜態塊當該類由ClassLoader初始化時,僅初始化/執行一次。

+0

但是每次創建類實例時,都不會再調用那段代碼嗎? –

+0

不僅當ClassLoader第一次加載類時 –

+0

真棒,解決了這個目的。 –

5

您可能會用到singleton並只加載一次。

+0

聽起來不錯,謝謝。即使是其他答案也很有道理,使用起來更方便。 :-) Upvoted。 –

相關問題