Как вызвать метод PostConstruct при создании объекта с новым ключевым словом

#java #spring-boot #postconstruct

Вопрос:

У меня есть класс Banana , в котором есть @PostConstruct метод, который я хочу запустить после создания объекта класса. Я создаю объект этого класса, используя эти вызовы

 Cat cat = new Cat(); Banana b = new Banana(cat);  

Итак, из журналов я понимаю, что этот @PostConstruct метод не вызывается при создании Banana объекта. Я думаю, что то, как я реализовал, не является правильным использованием. Может ли кто-нибудь подсказать мне, как правильно это реализовать, поскольку это моя первая задача в проекте Java с загрузкой Spring. Мне нужен этот установочный код для запуска после Banana создания объекта, так что есть ли какой-либо другой способ, кроме @PostConstruct

 @Slf4j public class Banana {  public Banana(Cat cat) {  this.cat = cat;  }  private Cat cat;   @PostConstruct  public void setup() {  // some code  }   public void execute() {  // some code  } }  

Ответ №1:

Все аннотации, отмеченные spring ( @PostConstruct , @PreDestroy , @Autowired и многие другие), применимы, когда объект создается самой spring. В этом случае spring может анализировать класс, обрабатывать аннотации и т. Д.

Когда вы создаете экземпляр самостоятельно ( new Banana() ) — spring даже не знает, что ваш объект существует, и, следовательно, не может вызвать ни один из его методов, поэтому вы вынуждены делать это самостоятельно. Так что да, в этом случае вам придется вызывать метод с аннотацией @PostConstruct вручную, а это значит, что @PostConstruct аннотацию довольно бесполезно можно вообще опустить.

Ответ №2:

@PostConstruct Аннотация используется для метода, который необходимо выполнить после внедрения зависимостей, чтобы выполнить любую инициализацию. Этот метод будет вызываться платформой, только если платформа управляет созданием объекта.

Так как вы создаете экземпляр Banana вручную, вы также должны вызвать его вручную.