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