2017-07-30 1 views
0

In einer Anwendung ther sind mehrere Eigenschaften für die Verwaltung von Ausnahmemeldungen, Warnungen Datei und einige andere diese Datei wie folgt Text: - core-message.properties - databaseException.properties .... ..Suche Nachricht in mulitple Eigenschaften Dateien

in Service-Schicht möglicherweise ein Datenbankaufruf auftreten und die Datenbank geben einen Schlüssel, der in einem die Eigenschaften-Dateien existieren, und ich möchte den Wert erhalten und die Ausnahmemeldung auf Benutzeroberflächenebene auslösen.

wenn ich weiß, dass der Schlüssel in Wich Eigenschaften die Code-Datei wie folgt sein:

@Value("#{core['theExceptionKey']}") 
public String excpetionMessage; 

private void myMethod() { 
throw new ExceptionClass(exceptionMessage); 
} 

denke ich Feder kann das tun, weil, wenn ich Frühling verwenden: Message-Tag in jsp Dateien Frühjahr nicht kennt Geben Sie die Datei ein, aber sie lädt die Nachricht korrekt.

+0

Können Sie alle Eigenschaften auf 1 Objekt-Objekt laden? siehe auch https://stackoverflow.com/questions/3403773/using-multiple-property-files-via-propertyplaceholderconfigurer-in-multiple-pr – user7294900

+0

ich es laden, aber in der Seite Service kann ich nicht definieren @value –

Antwort

0

der Wert des Schlüssels erhalten programmatisch können Sie Folgendes verwenden:

@Autowired 
private Environment env; 
... 
String something = env.getProperty("property.key.something"); 
+0

es gib mir null für den Schlüssel, der in meiner Eigenschaftendatei existiert –

1

Sie Frühling Environment für die Abstraktion verwenden können.

Zuerst müssen Sie Property Source Java-Konfigurationsdatei

@Configuration 
@PropertySource("classpath:/com/mypacakge/core-message.properties") 
public class AppConfig { 

Oder, wenn Sie mehrere Eigenschaften haben Dateien

@Configuration 
@PropertySources({ 
    @PropertySource("classpath:core-message.properties"), 
    @PropertySource("classpath:database.properties") 
}) 
    public class AppConfig { 

hinzufügen PropertySourceConfigurer bis zu Ihrer Java-Konfigurationsdatei

@Bean 
public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() { 
    return new PropertySourcesPlaceholderConfigurer(); 
} 
hinzufügen

Jetzt sagen wir das in Ihrem core-message.properties Sie haben folgende Daten

message.name=Hello 

Sie diese Daten in jeder Bohne von autowiring Environment Abstraktion abrufen und dann env.getProperty()

@Autowired 
Environment env; 

public void m1(){ 
String message = env.getProperty("message.name")` // will return Hello 

Environment Objekt aufrufen Schnittstelle Eigenschaft Quellen zu konfigurieren bietet und lösen Eigenschaften . Es bietet die Möglichkeit, aus einer Vielzahl von Quellen zu lesen: Eigenschaftendateien, Systemumgebungsvariable, JVM-Systemeigenschaften, Servletkontextparameter usw., was sehr nützlich ist. Zum Beispiel:

environment.getSystemProperties().put("message", "Hello"); 
    System.getProperties().put("message", "Hello"); 

    environment.getSystemProperties().get("message"); // retrieve property 
    environment.getPropertySources() // allows manipulation of Properties objects 

Spring Reference Documentation - Environment

Verwandte Themen