2

有谁知道何时将自动装配的字段(如果通过构造函数或设置方法没有区别)值注入到使用它的类中?

例如,我正在尝试注入值 serverProperties。正如我所发现的,当我尝试使用它时,该字段还没有得到注入的值,它为类字段 ROOT_DIRECTORY 设置了初始值,其中 serverProperties 抛出空指针异常。什么时候注射真正发生?在所有类字段初始化之后?提前致谢。

PS:控股bean是一个带注释的控制器。

@Autowired
@Qualifier("serverProperties")
private Properties serverProperties;

private final String ROOT_DIRECTORY = serverProperties.getProperty("root.path");
4

2 回答 2

2

如果你使用注解,你可以使用@PostConstruct

于 2014-11-20T01:09:19.073 回答
1

豆是

  1. 创建(使用构造函数、工厂方法等)
  2. 注入依赖项(您的@Autowired属性已设置)
  3. 调用init 方法

在这第三步中,您需要设置ROOT_DIRECTORY,而不仅仅是在类主体中定义它。所以你的代码应该看起来像

@Autowired
@Qualifier("serverProperties")
private Properties serverProperties;

private String ROOT_DIRECTORY;

public void init() {
    ROOT_DIRECTORY = serverProperties.getProperty("root.path");
}

你的bean应该有一个定义的init方法,比如

<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init"/>
于 2013-06-05T10:14:10.637 回答