#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 каким-то образом инициализирует его, но, вероятно, срок службы не тот, который я ожидаю.