Untuk mencegah instantiasi otomatis, listener tidak boleh diberi anotasi sebagai @Component
. Konfigurasi perlu menguasai ApplicationContext, yang dapat diautowired.
Jadi, kelas konfigurasi saya terlihat seperti ini:
@Autowired
private AbstractApplicationContext context;
private void registerListeners() {
ProjectsRepositoryListener firstListener = beanFactory.createBean(ProjectsRepositoryListener.class);
context.addApplicationListener(firstListener);
MySecondListener secondListener = beanFactory.createBean(MySecondListener.class);
context.addApplicationListener(secondListener);
}
Perhatikan bahwa ini berfungsi untuk semua ApplicationListener
, bukan hanya AbstractMongoEventListener
.