Controller中如何获取ApplicationContext中读取的配置参数,@value不行

clorxd 2015-12-23 02:12:59
今天做项目在properties文件中配置了参数,希望用@Value标签进行读取,然而发现无法注入,百度后得知使用springMVC+Spring时有两个容器,参数不共享,于是之后我耍了个小聪明,想尝试新建一个类设置变量,然后在controller中用 类.get()的方式获取值,然而事实证明这并没有什么卵用同样获取不到,犯了愁了,不知该如何解决,网上也百度了,没有实际做法,求指点,最好给个实例

这是我读取配置文件的applicationContext中的部分配置
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 允许JVM参数覆盖 -->
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<!-- 忽略没有找到的资源文件 -->
<property name="ignoreResourceNotFound" value="true" />
<!-- 配置资源文件 -->
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:shield.properties</value>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>


这个是我天真的变量类,省了点get,set没贴出来,太长,实际是都有的
@Component
public class ConfigProperties {
@Value("#{configProperties['shieldTime']}")
private long shieldTime;
@Value("#{configProperties['workState']}")
private int workState;
@Value("#{configProperties['host']}")
private String host;


public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public String getMailChecker() {
return mailChecker;
}


Controller其他中间无关部分略
 @RequestMapping(value = "/mail",method = RequestMethod.POST)
public @ResponseBody BaseResult<String> sendMail(@Valid SendMailInfo info){
ConfigProperties p=new ConfigProperties();
LOGGER.info(p.getHost());
LOGGER.info(""+p.getShieldTime());}
...全文
394 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
clorxd 2015-12-23
  • 打赏
  • 举报
回复
当然了
@Autowired    ConfigProperties p;
注入变量类的做法我也试过了,还是不行,虽然知道是容器问题但,原理上不太懂还是搞不定

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧