我需要在启动时添加一堆在数据库中备份的属性。 为了测试整个事情,我从这开始(下面的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实际上返回了正确的值。
为什么?
由于
Gerardo Blanco
答案 0 :(得分:1)
${...}
属性,您需要将PropertySourcesPlaceholderConfigurer
声明为bean才能启用它们。
Environment
开箱即用,因为它不需要特殊配置。