我想在启动时将属性值注入 Spring 上下文。我正在尝试使用 Spring 3.1 的新 Environment 和 PropertySource 功能来做到这一点。
在加载 Spring 上下文的类中,我定义了自己的 PropertySource 类,如下所示:
private static class CustomPropertySource extends PropertySource<String> {
public CustomPropertySource() {super("custom");}
@Override
public String getProperty(String name) {
if (name.equals("region")) {
return "LONDON";
}
return null;
}
然后,我将此属性源添加到应用程序上下文:
ClassPathXmlApplicationContext springIntegrationContext =
new ClassPathXmlApplicationContext("classpath:META-INF/spring/ds-spring-intg-context.xml");
context.getEnvironment().getPropertySources().addLast( new CustomPropertySource());
context.refresh();
context.start();
在我的一个 bean 中,我尝试访问属性值:
@Value("${region}")
public void setRegion(String v){
...
}
bur 收到以下错误:
java.lang.IllegalArgumentException:原因:java.lang.IllegalArgumentException:无法解析字符串值 [${region}] 中的占位符“区域”
任何帮助是极大的赞赏