Так как прослушиватель событий, управляемый аннотациями, был добавлен в Spring версии 4.2, для создания асинхронного прослушивателя событий необходимо только добавить аннотацию @Async
к методу publi c, аннотированному @EventListener
.
@Component
public class AnnotationDrivenContextStartedListener {
@Async
@EventListener
public void handleContextStart(ContextStartedEvent cse) {
System.out.println("Handling context started event.");
}
}
Вопрос в следующем. Можно ли добавить аннотацию @Async
к методу onApplicationEvent
традиционного ApplicationListener
для достижения той же функциональности? Или мы должны определить новый bean-компонент для ApplicationEventMulticaster
для обработки всех событий в асинхронном режиме c?
@Component
public class CustomSpringEventListener implements ApplicationListener<CustomSpringEvent> {
@Async
@Override
public void onApplicationEvent(CustomSpringEvent event) {
System.out.println("Received spring custom event - " + event.getMessage());
}
}
Я пробовал его, и он работает правильно, но я не уверен, что это хорошая практика или может вызвать проблемы.
Заранее спасибо.