news 2026/4/17 18:39:28

记录: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进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:26:42

大语言模型与因果内积

大语言模型(LLM)并非将知识简单地存储为静态清单,而是将其编码在一个高维几何空间里,形成一种具有独特数学结构的“概念宇宙”。理解这个空间的几何特性,特别是它与经典高维空间模型的差异,是解密其工作原理…

作者头像 李华
网站建设 2026/4/18 3:27:28

PE导出表三表EAT ENT EIT 三表逻辑解析

目录 🧠 PE 导出表三表逻辑完全解析 📘 核心理解 🔍 逻辑拆解 ① 函数地址表(EAT) ② 名称表(ENT) ③ 序号表(EIT) ④ 名字 → 序号 → 地址的完整路径 &#x1…

作者头像 李华
网站建设 2026/4/18 3:24:28

最新MTK AP-META工具V3.22324完整升级指南与使用详解

最新MTK AP-META工具V3.22324完整升级指南与使用详解 【免费下载链接】最新MTKAP-META工具APMETAToolV3.22324下载说明 最新MTK AP-META工具V3.22324现已发布,带来全新UI界面,优化用户体验,操作更直观便捷。本次更新淘汰了部分旧工具&#xf…

作者头像 李华
网站建设 2026/4/18 2:22:38

终极图片批量处理神器imgp:10倍效率提升指南

终极图片批量处理神器imgp:10倍效率提升指南 【免费下载链接】imgp :camera_flash: Fast batch image resizer and rotator 项目地址: https://gitcode.com/gh_mirrors/im/imgp 在数字图像时代,高效管理和处理大量图片是每个用户都会面临的挑战。…

作者头像 李华
网站建设 2026/4/18 2:24:21

血管粘附蛋白VAP1

血管粘附蛋白(VAP1)也称为氨基脲敏感型胺氧化酶(SSAO)或含铜胺氧化酶3(AOC3),在内皮细胞表面,它还可以作为细胞粘附蛋白,通过介导淋巴细胞与外周淋巴结血管内皮细胞的结合…

作者头像 李华