Class EventPublisherAspectRegistration

java.lang.Object
com.github._1c_syntax.bsl.languageserver.aop.EventPublisherAspectRegistration
All Implemented Interfaces:
Aware, ApplicationContextAware

@Component @Lazy(false) public class EventPublisherAspectRegistration extends Object implements ApplicationContextAware
Регистратор EventPublisherAspect для каждого Spring-контекста.

Поскольку EventPublisherAspect является синглтоном AspectJ CTW — один экземпляр на всю JVM — каждый Spring-контекст создаёт свой экземпляр этого @Component.

При инициализации бина ApplicationContextAware.setApplicationContext(ApplicationContext) вызывается Spring-ом с тем контекстом, которому принадлежит бин (строгий контракт Spring). Бин регистрирует свой контекст в аспекте. При уничтожении контекста PreDestroy гарантированно отменяет регистрацию, не затрагивая остальные живые контексты.

Вся полезная работа бина — побочный эффект в setApplicationContext(ApplicationContext), и его никто не инжектит. Поэтому при глобальной ленивой инициализации (spring.main.lazy-initialization=true) он бы не создавался и регистрация не выполнялась. @Lazy(false) гарантирует создание бина на старте контекста.