Вот краткий обзор проблемы:
Я хочу вызывать методы жизненного цикла бина без перезапуска приложения. Мне нужно вызвать методы-перехватчики (PostConstruct и PreDestroy) суперклассов во время перезагрузки bean-компонентов в Quarkus и CDI / Weld.
Например, у меня есть конечная точка для этого: / reload - она запускает перезагрузку бина, где мне нужно go через все бины, аннотированные моей пользовательской аннотацией, и вызывает (если такая аннотация присутствует) posconstr и аннотации predestr, НО я хочу сохранить порядок вызова bean-компонента (если bean-компонент расширяет суперкласс с таким обратным вызовом жизненного цикла, я хочу сначала вызвать его).
Что я сделал, чтобы исправить это: я использовал отражение, чтобы позвонить им. Но я думаю, что это своего рода грязное исправление и надеюсь, что должно быть более мудрое решение. Существует решение с использованием CDI:
beanManager.getInjectionTargetFactory(
beanManager.createAnnotatedType(instance.getClass())).createInjectionTarget(
bean).postConstruct(instance)
CDI имеет getInjectionTargetFactory в beanManager, Quarkus не поддерживает этот метод. Это работает, но я ищу решение, используя методы Quarkus.
Есть ли у Quarkus возможность вызывать методы postConstruct и preDestroy для всех компонентов без перезапуска приложения?