关于spring读取*.properties文件时,我们都会在applicationContext.xml文件中加类似如下配置:
<context:property-placeholder location="classpath*:appconf/config-*.properties,file:appconf/config-*.properties"/>
那么在使用是一般都是在对应的service层通过:
@Value("${prop.value}")
private String value;
这样的形式获取,没有问题,但是如果我们是在Controller层想引用properties中的值,这个时候这样的方式获取的是“${prop.value}”,对应@Value中的值,
没有做相应的解析,这时我们可以在applicationContext.xml中加入如下配置:
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>file:appconf/config-*.properties</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="properties" ref="configProperties" />
</bean>
在Controller中使用则
@Value("#{configProperties.value}")
private String value;
这样就可以获取值了,具体原因要看源码怎么处理这块