关于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中加入如下配置:
在Controller中使用则<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>
这样就可以获取值了,具体原因要看源码怎么处理这块@Value("#{configProperties.value}") private String value;