2014-10-28 19 views
5

Ho creato una semplice applicazione Web con Thymeleaf utilizzando Spring Boot. Io uso il file application.properties come configurazione. Quello che mi piacerebbe fare è aggiungere nuove proprietà come nome e versione a quel file e accedere ai valori di Thymeleaf.Accesso al file delle proprietà in Spring Expression Language

sono stato in grado di raggiungere questo obiettivo con la creazione di una nuova classe JavaConfiguration ed esponendo una molla Bean:

@Configuration 
public class ApplicationConfiguration { 

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

    @Bean 
    public String name() { 
     return name; 
    } 

} 

posso quindi visualizzare in un modello usando Thymeleaf in questo modo:

<span th:text="${@name}"></span> 

Questo mi sembra troppo prolisso e complicato. Quale sarebbe un modo più elegante per raggiungere questo obiettivo?

Se possibile, mi piacerebbe evitare l'uso della configurazione xml.

risposta

18

È possibile ottenere tramite il Environment. Es .:

${@environment.getProperty('name')} 
+0

Non è lo stesso di "$ {nome}"? –

+0

@DaveSyer no, questo non funziona per me in 'th: text =" $ {name} "' – cfrick

+0

Grazie, è esattamente quello che stavo cercando. Ho provato a usare $ {name} originariamente, ma non sono riuscito a farlo funzionare. Qualche idea sul perché funziona in @Value? – Shishigami

1

È molto semplice farlo in JavaConfig. Ecco un esempio:

@Configuration 
@PropertySource("classpath:my.properties") 
public class JavaConfigClass{ 

    @Value("${propertyName}") 
    String name; 


    @Bean //This is required to be able to access the property file parameters 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 

In alternativa, questo è l'equivalente XML:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>my.properties</value> 
    </property> 
</bean> 

Infine, è possibile utilizzare la variabile d'ambiente, ma è un sacco di codice aggiuntivo per nessun motivo.

Problemi correlati