在Spring Expression Language中访问属性文件

时间:2014-10-28 13:48:25

标签: java spring spring-boot thymeleaf

我使用Spring Boot使用Thymeleaf创建了一个简单的Web应用程序。我使用application.properties文件作为配置。我想要做的是向该文件添加名称和版本等新属性,并访问Thymeleaf的值。

我已经能够通过创建一个新的JavaConfiguration类并暴露一个Spring Bean来实现这一目标:

@Configuration
public class ApplicationConfiguration {

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

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

}

然后我可以使用Thymeleaf将其显示在模板中,如下所示:

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

这对我来说似乎过于冗长和复杂。实现这一目标的更优雅方式是什么?

如果可能,我想避免使用xml配置。

2 个答案:

答案 0 :(得分:25)

您可以通过Environment获取。 E.g:

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

答案 1 :(得分:2)

在JavaConfig中执行此操作非常简单。这是一个例子:

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

或者,这是XML等价物:

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

最后,您可以使用Environment变量,但无缘无故需要额外的代码。