原文:
spring3中新增的@value注解 ,这里成功配置 controller读取不到的原因: 我在之前的项目中一直使用下面的格式注入:- @Value("#{config['redis.host']}")
- private String redisHost;
使用下面的方式注入总是不成功。
- @Value("${redis.host}")
- private String redisHost;
最近终于发现,扫描配置文件的语句:
- <context:property-placeholder location="classpath*:/xxx.properties" />
要交给springMVC的DispatcherServlet去扫描,而不是spring的监听器ContextLoaderListener去扫描,就可以比较方便的使用“${xxx}”去注入。 详细配置: Spring MVC 通过@Value注解读取.properties配置内容,@value.properties 第一步: 在applicationContext.xml配置: 1 <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 2 <property name="locations"> 3 <list> 4 <value>classpath:/config/*.properties</value> 5 </list> 6 </property> 7 </bean> 8 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"> 9 <property name="properties" ref="configProperties" /> 10 </bean> 第二步: 建立配置文件内容: 例如:userPageSize=5 第三步: 在Controller中使用注解获得配置项内容: 1 @Value("#{ configProperties['userPageSize']}") 2 private String userPageSize; 第四步: 后面的代码就可以使用userPageSize这个私有变量了,这个字符串的值就是我们配置文件中配置的5.