【发布时间】:2020-02-02 16:23:02
【问题描述】:
是否可以在使用 javax 中的注解调用构造函数后立即调用特定的初始化方法?
我在调用构造函数后立即将@Inject注释(javax.inject.Inject)放在我想在方法中使用@PostConstruct注释(javax.annotation.PostConstruct)初始化的字段上,但是这个init方法没有被调用并且NPE崩溃.
public class ClassChild extends ClassParent{
@Inject
private SomeService someService;
@PostConstruct
public void init(){
someService = new SomeService(getSomeValues()) // getSomeValues() a method from parent
}
我是否正确使用了这些注释?问题是什么?如何在调用 ClassChild 构造函数后立即调用 init() 方法?如果有任何帮助,我将不胜感激!
【问题讨论】:
-
全错了。您正在尝试使用
@PostConstruct来初始化应该注入的someService。 -
你为什么要初始化一些实际上是要注入/自动装配的东西(在这种情况下是
SomeService)?此外,使用@PostConstruct注释的方法通常用于消耗注入的 bean 或在此 bean 准备好后执行任何操作。 -
@Isank 我从来没有使用过这些注释,所以我做错了。我只需要在创建 ClassChild 实例后立即初始化“someService”(无需显式调用 init())。
标签: java dependency-injection postconstruct