1

我需要在启动时添加一堆支持在数据库中的属性。为了测试整个事情是否有效,我从这个开始(下面的 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 实际上返回正确的值。

为什么?

谢谢

杰拉尔多·布兰科

4

1 回答 1

1

${...}默认情况下不启用属性,您需要声明PropertySourcesPlaceholderConfigurer为 bean 才能启用它们。

Environment开箱即用,因为它不需要特殊配置。

于 2013-01-18T15:42:04.197 回答