我需要在启动时添加一堆支持在数据库中的属性。为了测试整个事情是否有效,我从这个开始(下面的 ds.username 属性来自 catalina.properties。它只是为了验证我没有破坏任何东西):
public class PropertiesInitializer implements ApplicationContextInitializer<ConfigurableWebApplicationContext> {
@Override
public void initialize(ConfigurableWebApplicationContext ctx) {
try {
props.put("hello", "goodbye");
MutablePropertySources propertySources = ctx.getEnvironment().getPropertySources();
propertySources.addFirst(new MapPropertySource("dbProps", props));
}
catch(Exception e) {
e.printStackTrace();
}
}
我有一个@Controller,我正在这样做:
@Autowired
Environment env;
@Value( "${hello}" )
public String hello;
@Value( "${ds.username}" )
public String un;
...
所以,当我打印这些时,'hello' 和 'un' 是空的,但 env.getProperties 实际上返回正确的值。
为什么?
谢谢
杰拉尔多·布兰科