2016-06-19 6 views
1

Ich lade Sie Eigenschaften einer Datei in meinem Java-Anwendung mit dem folgenden Codeladen Eigenschaften in die Applikation nur einmal durchgeführt die gesamte Anwendung

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

Aber ich nicht, diesen Code wollen wieder aufgerufen werden, sobald ich laden Die Eigenschaften in connectionParameters Ich möchte nicht, dass die Ladelogik erneut aufgerufen wird, und ich möchte, dass die Liste am Leben und verfügbar ist, solange die Anwendung aktiv ist.

Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

Sie könnten einfach die Felder in statische Felder konvertieren, um sicherzustellen, dass sie nur einmal auf Klasseninitialisierung als nächstes initialisiert werden:

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

Tat statische Felder und statische Blöcke initialisiert/nur einmal ausgeführt, wenn die Klasse von ClassLoader initialisiert wird.

+0

Aber wird jedes Mal, wenn die Klasseninstanz erstellt wird, dieser Code nicht erneut aufgerufen? –

+0

nur wenn die Klasse zum ersten Mal vom ClassLoader geladen wird –

+0

Ehrfürchtig, das löst den Zweck. –

5

Sie könnten ein singleton verwenden und es nur einmal laden.

+0

Klingt gut, danke. Selbst die andere Antwort macht Sinn und ist bequemer zu benutzen. :-) Upvoted. –

Verwandte Themen