2016-07-09 2 views
8

Ich habe eine Spring-Boot-Anwendung und ich möchte einige Variablen aus meiner Datei application.properties lesen. Tatsächlich machen obige Codes das möglich. Aber ich denke, es gibt eine gute Methode für diese Alternative.So lesen Sie Daten aus der Java-Eigenschaftendatei mit Spring Boot

Properties prop = new Properties(); 
InputStream input = null; 

try { 
    input = new FileInputStream("config.properties"); 
    prop.load(input); 
    gMapReportUrl = prop.getProperty("gMapReportUrl"); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} finally { 
    ... 
} 

Antwort

19

Sie können @PropertySource verwenden, um Ihre Konfiguration in eine Eigenschaftendatei zu externalisieren. Es gibt Anzahl der Art und Weise Eigenschaften zu tun bekommen:

1. Ordnen Sie die Eigenschaftswerte zu den Feldern von @Value mit PropertySourcesPlaceholderConfigurer mit ${} in @Value zu beheben:

@Configuration 
@PropertySource("file:config.properties") 
public class ApplicationConfiguration { 

    @Value("${gMapReportUrl}") 
    private String gMapReportUrl; 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 

} 

2. Holen Sie sich das Objekt Werte unter Verwendung Environment:

@Configuration 
@PropertySource("file:config.properties") 
public class ApplicationConfiguration { 

    @Autowired 
    private Environment env; 

    public void foo() { 
     env.getProperty("gMapReportUrl"); 
    } 

} 

Hoffe, das kann helfen

+0

Warum foo void? Wie verwende ich diese Klasse? – gstackoverflow

-1

Ich würde vorschlagen, Ressourcen-Bundles zu verwenden, die die Standardmethode zum Lesen von Eigenschaftendateien ist, die auf dem Klassenpfad (kann auch auf bestimmte Dateien verwendet werden).

Beachten Sie, dass Ressourcenbündel normalerweise mit Dateien verwendet werden, die Schlüsselwertpaare speichern.

Codebeispiel:

ResourceBundle bundle = ResourceBundle.getBundle("config"); //creates bundle from file `config.properties` 
List<String> keys = (List<String>) bundle.getKeys(); //gets the list of keys found in the bundle (file) 
String value = bundle.getString("gMapReportUrl"); //gets the value for the key `mykey` 

config.properties:

gMapReportUrl = somevalue

someOtherKey = random

eine Kombinationen dieser Methoden verwenden, sollten Sie in der Lage sein, um alle Daten, die Sie benötigen, von Ihnen zu bekommen Kleindatei.

+0

Keine geeignete Methode zum Zugriff auf Eigenschaftendateien in Spring-Anwendungen. –

+0

Spring Boot hat bessere Implementierungen ... – SAM

3

würde ich die folgende Art und Weise vorschlagen:

@PropertySource(ignoreResourceNotFound = true, value = "classpath:otherprops.properties") 
@Controller 
public class ClassA { 
    @Value("${myName}") 
    String name; 

    @RequestMapping(value = "/xyz") 
    @ResponseBody 
    public void getName(){ 
     System.out.println(name); 
    } 
} 

Hier wird Ihre neue Eigenschaften Dateiname ist „otherprops.properties“ und der Eigenschaftsname ist „myName“. Dies ist die einfachste Implementierung für den Zugriff auf die Eigenschaftendatei in Spring-Boot-Version 1.5.8.