Asyn c ApplicationListener в Spring по сравнению с asyn c @EventListener - PullRequest
0 голосов
/ 28 апреля 2020

Так как прослушиватель событий, управляемый аннотациями, был добавлен в 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());
    }

}

Я пробовал его, и он работает правильно, но я не уверен, что это хорошая практика или может вызвать проблемы.

Заранее спасибо.

...