首页 > 解决方案 > 带有注释@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() 方法?如果有任何帮助,我将不胜感激!

标签: javadependency-injectionpostconstruct

解决方案


请注意,@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>

在此处输入链接描述


推荐阅读