Spring Boot ASync + AutoWired Executor против ручного Executor + Future/Callable?

Есть ли недостаток в создании и управлении вашим собственным ExecutorService по сравнению с использованием Spring Boot @Async для метода с методом @Bean для создания Executor?

Мне кажется, что делать это вручную намного проще. Я просто создаю свой ExecutorService и метод, который использует его для планирования задачи/Callable.

I Spring Boot мне понадобится:

  • Украсьте метод @Async
  • Украсьте мой класс конфигурации @Configuration, @EnableAsync
  • Добавьте @Bean, чтобы создать Executor

Есть ли потенциальные проблемы с выполнением этого вручную? Возможно ли, что Spring убьет нить? Есть ли другие преимущества использования шаблона Spring Async?


person Don Rhummy    schedule 04.08.2017    source источник


Ответы (1)


Казалось бы, большинство ваших зависаний - это элементы, которые верны для многих конфигураций Spring IoC. @Async является частью Spring Framework, а не Spring Boot.

Вы могли бы справиться с исполнителем самостоятельно, как вы упомянули, но я бы спросил, зачем беспокоиться, если вы уже начали использовать Spring Framework и Spring Boot.

Spring сам обрабатывает некоторые элементы в фоновом режиме, например shutdown исполнителя при закрытии ApplicationContext.

Существует также некоторая хорошая встроенная обработка исключений, которую можно использовать вместе с дополнением к аспекту планирования Spring Framework, если вы решите его использовать.

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-annotation-support-qualification

Необходимость создавать @Bean, @Configuration — это факт жизни с Spring, и, на мой взгляд, это не совсем недостаток, это просто факт жизни с фреймворком.

Наконец, @Async абстрагирует необходимость реализации Runnable, а @Callable эффективно позволяет быстрее реализовывать асинхронные возможности.

person Darren Forsythe    schedule 04.08.2017