2016-07-09 127 views
8

Ho un'applicazione di avvio a molla e voglio leggere alcune variabili dal mio file application.properties. Infatti sopra i codici farlo. Ma penso che ci sia un buon metodo per questa alternativa.Come leggere i dati dal file delle proprietà java utilizzando 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 { 
    ... 
} 

risposta

19

È possibile utilizzare @PropertySource di esternare la configurazione in un file di proprietà. Ci sono certo numero di modo di fare ottenere le proprietà:

1. assegnare i valori delle proprietà ai campi utilizzando @Value con PropertySourcesPlaceholderConfigurer per risolvere ${} in @Value:

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

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

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

} 

2. ottenere la proprietà valori utilizzando Environment:

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

    @Autowired 
    private Environment env; 

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

} 

Spero che questo possa essere d'aiuto

+0

Perché nullo? Come usare questa lezione? – gstackoverflow

-1

Suggerirei di utilizzare bundle di risorse che è il modo standard di leggere i file di proprietà che si trovano sul classpath (può essere utilizzato anche su file specifici).

Si noti che i pacchetti di risorse vengono in genere utilizzati con i file che memorizzano coppie di valori chiave.

codice di esempio:

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 = casuale

Utilizzando un combinazioni di questi metodi si dovrebbe essere in grado per ottenere tutti i dati necessari da te pro file perty.

+0

Non è un modo corretto per accedere ai file delle proprietà nelle applicazioni Spring. –

+0

avvio a molla ha migliori implementazioni bro ... – SAM

3

vorrei suggerire seguente modo:

@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); 
    } 
} 

Qui il vostro file nuove proprietà nome è "otherprops.properties" e il nome della proprietà è "myName". Questa è l'implementazione più semplice per accedere al file delle proprietà nella versione di avvio 1.5.8.