Spring Boot ASync + AutoWired Executor vs手动Executor + Future / Callable?

时间:2017-08-04 18:55:29

标签: java spring asynchronous spring-boot spring-async

创建和管理自己的ExecutorService与使用Spring @Bean方法创建Executor方法的@Async相比,是否存在缺陷?

对我来说,手动操作似乎更简单。我只是创建了我的ExecutorService和一个使用它来安排任务/ Callable的方法。

我需要Spring Boot:

  • 使用@Async
  • 装饰方法
  • 使用@Configuration@EnableAsync
  • 装饰我的配置类
  • 添加@Bean以创建Executor

手动执行是否存在潜在问题? Spring会杀掉线程吗?使用Spring异步模式还有其他一些好处吗?

1 个答案:

答案 0 :(得分:1)

看起来大多数挂机都是适用于大量Spring IoC配置的项目。 @Async是Spring Framework而不是Spring Boot的一部分。

你可以像你提到的那样自己处理执行程序,但是如果你已经开始使用Spring Framework和Spring Boot,我会质疑为什么这么麻烦。

Spring会在后台处理一些项目,例如关闭ApplicationContext时执行程序的shutdown

如果您选择使用它,还可以使用异常处理中的一些很好的功能,以及对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有效地允许更快地实现异步功能。