Performance3 - SpotBugsExtensionForSpringFrameWork/CS5098 GitHub Wiki

Performance - Do not use @Async annotation with default TaskExecutor

Description

While @Async annotation provides developers an conveninent way to implement asynchonous method in Spring Application, the default TaskExecutor is SimpleAsyncTaskExecutor. However using SimpleAsyncTaskExecutor is not a good practice since it's not a real implementation of thread pool.

Bug pattern

Just using @Async without any configuration.

Solution

In this case, the most improtant thing is to customize executor. We have three ways to configure this.

  • Implements AsyncConfigurer
  • Extends AsyncConfigurerSupport
  • Customize bean name as "taskExecutor"