В моем весеннем компоненте я хочу использовать функцию отправки весеннего события. Проблема в том, что событие не может быть отправлено, если контекст Spring не был инициализирован, и мой компонент по некоторым причинам может отправлять события до того, как это произойдет.
Я использовал следующее:
- реализовать
ApplicationContextAware
и использоватьConfigurableApplicationContext.isActive()
- это становится верным в начале фазы инициализации контекста - используйте
ConfigurableApplicationContext.isRunning()
- это вызывает исключениеIllegalStateException("LifecycleProcessor not initialized...
- слушать
ContextRefreshedEvent
- это не работает, потому что это внутренний компонент и используется как свойство для компонента, который реализуетBeanFactoryPostProcessor
- реализация
SmartLifecycle
также не работает, потому что для внутренних компонентов
Итак, каков ПРОСТОЙ и правильный способ определить, запущен ли контекст и можно ли отправить событие?