news 2025/12/14 8:23:19

记录:Spring异步执行的报异常No qualifying bean of type ‘org.springframework.core.task.TaskExecutor‘ available

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记录:Spring异步执行的报异常No qualifying bean of type ‘org.springframework.core.task.TaskExecutor‘ available

问题:

观察项目运行日志的时候突然发现了一个异常:

无TaskExecutor 注入的情况

[2018-04-03 10:49:07] 100.0.1.246 http-nio-8080-exec-9 DEBUG org.springframework.scheduling.annotation.AnnotationAsyncExecutionInterceptor———— Could not find default TaskExecutor bean org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.core.task.TaskExecutor' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:353) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:340) at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.getDefaultExecutor(AsyncExecutionAspectSupport.java:228) at org.springframework.aop.interceptor.AsyncExecutionInterceptor.getDefaultExecutor(AsyncExecutionInterceptor.java:156) at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.determineAsyncExecutor(AsyncExecutionAspectSupport.java:166) at org.springframework.aop.interceptor.AsyncExecutionInterceptor.invoke(AsyncExecutionInterceptor.java:105) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) at com.sun.proxy.$Proxy103.saveAndSendMQ(Unknown Source)

或者,TaskExecutor 这个类有两个的情况(matching bean but found 2:applicationTaskExecutor,taskScheduler):

2025-12-11 11:03:00,895 DEBUG 24516 --- [main] [] .s.a.AnnotationAsyncExecutionInterceptor : Could not find unique TaskExecutor bean. Continuing search for an Executor bean named 'taskExecutor' org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.core.task.TaskExecutor' available: expected single matching bean but found 2: applicationTaskExecutor,taskScheduler at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1273) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:494) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.getDefaultExecutor(AsyncExecutionAspectSupport.java:233) at org.springframework.aop.interceptor.AsyncExecutionInterceptor.getDefaultExecutor(AsyncExecutionInterceptor.java:157) at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.lambda$configure$2(AsyncExecutionAspectSupport.java:119) at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:100) at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.determineAsyncExecutor(AsyncExecutionAspectSupport.java:172) at org.springframework.aop.interceptor.AsyncExecutionInterceptor.invoke(AsyncExecutionInterceptor.java:107) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)
  • applicationTaskExecutor:Spring Boot 默认的异步任务执行器(由TaskExecutionAutoConfiguration自动配置)。
  • taskScheduler:Spring Boot 默认的任务调度器(由TaskSchedulingAutoConfiguration自动配置),其类型也实现了TaskExecutor,因此会被识别为同类型 Bean。
Bean 名称自动配置类核心用途为什么是 TaskExecutor 类型
applicationTaskExecutorTaskExecutionAutoConfiguration处理异步任务(如@Async注解)直接实现TaskExecutor
taskSchedulerTaskSchedulingAutoConfiguration处理定时任务(如@Scheduled实现类ThreadPoolTaskScheduler同时继承TaskExecutor

异常属于DEBUG级别,并不影响系统运行,但是还是比较碍眼

解决:

在配置类中实现AsyncConfigurer接口,注册taskExecutor执行任务,即可,图和代码如下

package common.core.config; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.AsyncConfigurer; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; /** * @ClassName TaskExecutorConfig * @Description 实现AsyncConfigurer接口,指定异步执行的线程池 * @Date 2025/12/11 11:18 * @Version 1.0 */ @Configuration public class TaskExecutorConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(10); taskExecutor.setMaxPoolSize(80); taskExecutor.setQueueCapacity(100); taskExecutor.initialize(); return taskExecutor; } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return null; } }

引用:

1、https://www.cnblogs.com/java-spring/p/8707789.html

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/11 19:59:32

从零定义Agentic Apps:Docker Compose配置实战(附10个高可用场景案例)

第一章:从零理解Agentic Apps与Docker Compose的融合逻辑在现代云原生架构中,Agentic Apps 代表了一类具备自主决策能力的应用程序,它们能够根据环境变化动态调整行为。这类应用通常由多个协同工作的智能组件构成,例如事件驱动代理…

作者头像 李华
网站建设 2025/12/11 19:57:55

Kafka 的自动提交机制详解:Spring Boot 中如何正确使用?

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!一、什么是“提交”(Commit)?在 Kafka 中,消费者消费消息后需要“提交偏移量”(offset commit),告诉 Kafka&a…

作者头像 李华
网站建设 2025/12/11 19:56:33

PAT 1135 Is It A Red-Black Tree

这一题的大意是给出一个二叉搜索树,让我们判断是不是红黑树, 只需要按题目要求构造好树,然后判断它是不是符合红黑树的条件即可。 题目给出了红黑树的性质,我们只需要判断它是否满足即可。 需要我们对二叉搜索树,建树&…

作者头像 李华
网站建设 2025/12/11 19:51:00

YOLOv8-Ultralytics 系列文章目录

YOLOv8-Ultralytics 系列文章目录 文章目录YOLOv8-Ultralytics 系列文章目录前言YOLOv8-Ultralytics 概述核心定位与优势核心技术架构YOLOv8-Ultralytics 源码讲解目标检测部分总结前言 YOLOv8是由Ultralytics公司(创始人也是YOLO系列核心作者Joseph Redmon的合作者…

作者头像 李华
网站建设 2025/12/11 19:49:19

自动化运维工程师之ansible启动rpcbind和nfs服务

通过 systemd 模块分别启动 rpcbind 和 nfs 服务,并设置它们为开机自启,是 NFS 服务部署中启动相关服务的典型配置。下面我会逐部分解析代码的含义、作用以及关键细节。 一、代码整体功能总结 这段代码包含两个独立的 systemd 模块任务,依次完…

作者头像 李华