java - 带有注释@PostConstruct(javax)的方法不会调用
问题描述
是否可以在使用 javax 中的注释调用构造函数后立即调用特定的初始化方法?
在调用构造函数之后,我将@Inject
注释(javax.inject.Inject)
放在我想要在方法中初始化的字段上,但是没有调用这个 init 方法并且 NPE 崩溃。@PostConstruct
(javax.annotation.PostConstruct)
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 和 @PreDestroy 注释都是 Java EE 的一部分。由于 Java EE 在 Java 9 中已被弃用并在 Java 11 中被删除,我们必须添加一个额外的依赖项才能使用这些注解:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
推荐阅读
- python - 使用 webengine 视频和音频编解码器
- django - 升级 django 2.1 => 2.2 后用户对象 .save() 不保存
- python - 如何在python中使用带有re的findall函数捕获一系列字母?
- yii2 - Yii2 Url::to 返回本地 IP 而不是公共服务器名称
- java - 如何在泛型类上调用静态方法
- php - 使用 .htaccess php_value 设置 cookie 域不起作用
- java - 在 IntelliJ 中将目录添加到类路径
- c# - 将默认值沿元素树传播的能力不起作用
- c++ - 在统一内存 CUDA C/C++ 中分配一个二维向量
- html - 尝试让我的 html 正确运行 for 循环时遇到问题