1
В моей весенней фасоли я хочу использовать функцию события весны отправки. Проблема в событии не может быть отправлена, если весенний контекст не был инициализирован, и мой компонент по некоторым причинам может отправлять события до этого.Правильный способ поиска начала весеннего контекста
я использовал следующее:
- осуществлять
ApplicationContextAware
и использоватьConfigurableApplicationContext.isActive()
- это становится правдой в начале фазы инициализации контекста - использование
ConfigurableApplicationContext.isRunning()
- это бросает исключениеIllegalStateException("LifecycleProcessor not initialized...
- прослушивающие
ContextRefreshedEvent
- это не работает, потому что это внутренний компонент и используется как свойство для компонента, который реализуетBeanFactoryPostProcessor
- внедрение
SmartLifecycle
также не работает, так как для внутренней фасоли
Так что это ЛЕГКО и правильный способ, чтобы определить, если контекст работает и события могут быть отправлены?
Простой способ, не использовать внутренний компонент и реализовать «SmartLifecycle». Но разве реальная проблема вам не нужна, чтобы исправить тот факт, что вы отправляете события раньше? –
Да - проблема с корнем заключается в том, чтобы предотвратить отправку событий слишком рано. Способ узнать, готова ли весна к событиям. –
Я добавил ошибку https://jira.spring.io/browse/SPR-14783 о ContextRefreshedEvent не получен внутренними бобами, если внешний bean реализует BeanFactoryPostProcessor –