创建和管理您自己的 ExecutorService
与使用 Spring Boot 的 @Async 方法和 @Bean
方法创建 Executor< 相比有缺点吗
?
对我来说,手动操作似乎简单得多。我只是创建了我的 ExecutorService
和一个使用它来安排任务/Callable
的方法。
我需要 Spring Boot:
- 用
@Async
装饰方法 - 用
@Configuration
、@EnableAsync
装饰我的配置类> - 添加一个
@Bean
来创建一个Executor
手动操作是否存在潜在问题? Spring 会终止线程吗?使用 Spring 异步模式还有其他一些好处吗?
最佳答案
看起来你的大部分挂断都是适用于许多 Spring IoC 配置的项目。 @Async
是 Spring Framework 而非 Spring Boot 的一部分。
您可以像您提到的那样自己处理执行程序,但我想问的是,如果您已经开始使用 Spring Framework 和 Spring Boot,为什么还要麻烦。
Spring 确实在后台处理一些项目本身,例如关闭 ApplicationContext 时执行器的 shutdown
。
如果您选择使用它,还有一些很好的异常处理可以与 Spring Framework 的调度方面一起使用。
必须创建 @Bean
,@Configuration
是 Spring 的一个现实,在我看来,这并不是一个真正的缺点,它只是一个现实框架。
最后,@Async
抽象了实现Runnable
的需要,或者 @Callable
有效地允许更快地实现异步功能。
关于java - Spring Boot ASync + AutoWired Executor 与手动 Executor + Future/Callable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513756/