@PostConstruct не вызывается в @RequestScoped

#dependency-injection #quarkus #postconstruct

#внедрение зависимостей #quarkus #postconstruct

Вопрос:

Я использую следующий компонент

@RequestScoped открытый класс MyJWT {

 @Inject
JsonWebToken jwt;

private User loggedUser;
private String rawToken;

@PostConstruct
public void init() {
    if (jwt != null amp;amp; jwt.getRawToken() != null) {
        this.loggedUser = User.findByEmail( jwt.getClaim(Claims.email.name()).toString());
        this.rawToken = jwt.getRawToken();
    }
}
 

но я не вижу init , вызывается ли когда-либо. Я имею в виду, что мой отладчик не останавливается ни на каких точках останова внутри. В случае, если отладчик сбит с толку инструментарием, я также пытался добавить исключение внутри, но не увидел никакого эффекта.

Как это возможно?

Комментарии:

1. Как используется этот MyJWT класс? Если никто не вызывает какой-либо метод для этого компонента, он не будет инициализирован. Имейте в виду, что для @RequestScoped компонентов контейнер будет вводить прокси, который будет искать (или создавать в первый раз) экземпляр, соответствующий «текущему» запросу, при каждом вызове метода .

2. Методы вызываются, но не могут изменять поля, как если бы класс был повторно инициализирован.

3. Я имею в виду, что методы определенно вызываются, и я их отслеживаю.

4. Хорошо, но как используется класс? Вы этого не делаете new MyJWT() , верно? (Извините, если это звучит как глупый вопрос, я видел, как люди слишком часто совершали эту ошибку.)

5. Нет, Qaurkus каким-то образом инициализирует его, но, вероятно, срок службы не тот, который я ожидаю.