2016-05-03 8 views
1

Ich habe ein Szenario, ich versuche, Fehlercode Mechanismus in meiner Anwendung zu implementieren. Das ist der Ansatz, dem ich derzeit folgen.So laden Sie eine Eigenschaftendatei einmal und verwenden sie in der gesamten Anwendung in Java

Aber ich brauche Fehlercode in vielen verschiedenen Klassen und ich möchte nicht den oben genannten Code die ganze Zeit in verschiedenen Klassen schreiben.

Gibt es eine andere Möglichkeit, die Eigenschaftendatei einmal zu initialisieren und sie wo in der Klasse zu verwenden.

Wie erreiche ich das?

Was sind verschiedene Möglichkeiten, dies zu erreichen?

Ich benutze Feder, gibt es eine Möglichkeit, dies im Frühjahr zu erreichen?

Ich bin offen für jeden anderen Mechanismus anstelle der Eigenschaftendatei.

+0

Wenn es Fehlercodes sind, möchten Sie sie vielleicht lokalisieren - in diesem Fall überprüfen Sie hier für eine Lösung: http://stackoverflow.com/questions/6246381/getting-localized-message-from-resourcebundle-via-annotations- im Frühling Rahmen – Jan

Antwort

0

Warum implementieren Sie nicht einfach eine separate Singleton-Klasse, etwa "ErrorCodes", initialisieren Sie Ihre Eigenschaftendatei einmal während der Objekterstellung und rufen Sie dann die Datei über einen Getter ab?

0

Definieren Sie eine Constants.java und fügen Sie die Eigenschaften hinzu, die Sie während der Laufzeit Ihrer Anwendung verwenden möchten. Diese Eigenschaften können von anderen Klassen verwendet werden und müssen nicht für jede Klassendefinition initialisiert werden.

public class Constants { 
public static String[] tableAndColumnNames; 
public static String[] getTableAndColumnNames() { 
     return tableAndColumnNames; 
    } 
    public static void setTableAndColumnNames(String tableNames) { 
     Constants.tableAndColumnNames = tableNames.split(";"); 
    } 

public static String getDB() { 
     return DB; 
    } 
public static final String HSQLBD = "HSQLDB"; 
    public static final String ORACLE = "ORACLE"; 
public static String DB; 
    public static void setDB(int dB) { 
     if (dB == 0) { 
      Constants.DB = HSQLBD; 
     } else { 
      Constants.DB = ORACLE; 
     } 
    } 
} 

Laden Sie diese Eigenschaften beim Anwendungsstart. Wenn Sie die Eigenschaften laden Sie nur eine Reihe Konstanten wie unten

public static void loadProperties() { 
Properties property = new Properties(); 
      InputStream input = CommonUtilities.class.getResourceAsStream("/DB.properties"); 
      property.load(input); 
      Constants.setDB(Integer.parseInt(prop.getProperty("DB"))); 
Constants.setTableAndColumnNames(property.getProperty("tableAndColumnNames")); 
} 

und nach den Eigenschaften waren initializedd Sie es an jedem Punkt des Programms verwenden können, nur durch die konstante Klasse verweisen. Wie

public void someOtherClass() 

public static void main(String[] args) { 
    if(this.DB.equals(Constans.getDB()) // will return the DB from the properties class 
    // no need to initialize properties again in every class. 
} 

Hoffe das hilft.

Verwandte Themen