Play Framework + Spring:从application.conf中注入URL

时间:2015-04-21 07:41:47

标签: java spring playframework playframework-2.0

我正在使用Spring 4.1.x和Play 2.3.x,我试图从Play的application.conf文件中注入一个属性值。

我可以通过以下方式访问属性:

@PropertySource("classpath:application.conf")

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

我的application.conf

中有一个网址值

photo.url="https://our-photo-storage.net"

请注意引号。如果我删除它们,Play将抛出com.typesafe.config.ConfigException$Parse

我正在注入这样的属性值:

@Autowired
public PhotoToUrlMapper(@Value("${photo.url}") url) {
    // trim quotes :-/
}

Spring会使用引号注入值。我显然可以修剪它们,但我希望能够在没有引号的情况下注入网址。

注意:

  • 我可能会创建一个单独的.properties文件,但我想避免这种情况(更多配置)
  • 我可能会使用可怕的静态Play Play.current.configuration.getString("photo.url"),但我实际上喜欢编写单元测试...

对此有合理的解决方法吗?

1 个答案:

答案 0 :(得分:0)

我想唯一的方法是使用属性文件,我不认为配置太多,因为它为您提供了更好的代码可读性。引用了包含属性文件所需代码的示例

<bean id="placeholderProperties"                
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:/url.properties</value>
            </list>
        </property>
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="order" value="1" />
    </bean>