Class EventPublisherAspectRegistration
- All Implemented Interfaces:
Aware, ApplicationContextAware
EventPublisherAspect для каждого Spring-контекста.
Поскольку EventPublisherAspect является синглтоном AspectJ CTW — один экземпляр на всю JVM —
каждый Spring-контекст создаёт свой экземпляр этого @Component.
При инициализации бина ApplicationContextAware.setApplicationContext(ApplicationContext) вызывается Spring-ом
с тем контекстом, которому принадлежит бин (строгий контракт Spring). Бин регистрирует свой контекст
в аспекте. При уничтожении контекста PreDestroy гарантированно отменяет регистрацию,
не затрагивая остальные живые контексты.
Вся полезная работа бина — побочный эффект в setApplicationContext(ApplicationContext), и его никто не инжектит.
Поэтому при глобальной ленивой инициализации (spring.main.lazy-initialization=true) он бы не
создавался и регистрация не выполнялась. @Lazy(false) гарантирует создание бина на старте
контекста.
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
EventPublisherAspectRegistration
@ConstructorProperties("aspect") public EventPublisherAspectRegistration(EventPublisherAspect aspect)
-
-
Method Details
-
setApplicationContext
- Specified by:
setApplicationContextin interfaceApplicationContextAware
-
destroy
-