news 2026/9/3 2:33:33

记录: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/9/2 23:51:40

STM32按键神操作!短按长按稳如狗,回调函数让代码爽到飞起~

STM32按键神操作!短按长按稳如狗,回调函数让代码爽到飞起~ 做STM32项目时,你是不是也遇到过这些糟心事儿?按键按一下抖三下,短按长按傻傻分不清,想改个功能还得在按键驱动里翻来翻去&#xff0c…

作者头像 李华
网站建设 2026/9/3 0:41:19

k8s修改 Kubelet 配置文件,避免乱驱逐!!!

这个文件是 kubelet 的基础服务文件。但是,请先不要急着直接改这个文件里面的 ExecStart! 修改时一定要记得做备份!!!!!! ⚠️ 重要提醒:不要直接改这里(99% …

作者头像 李华
网站建设 2026/9/2 22:54:58

什么是嵌入式、单片机、STM32

查看全文:https://www.longkui.site/program/development/mcu-stm32/7123/ 1. 嵌入式系统(Embedded System) 定义:嵌入式系统是一种专为特定任务设计的计算机系统,通常被嵌入到更大的设备或系统中。它由硬件&#xff0…

作者头像 李华
网站建设 2026/9/2 22:55:19

大模型RL训练更简单?揭秘确定性状态转移带来的算法革新!

简介 本文揭示了通用强化学习与大模型强化学习的核心差异在于状态转移的确定性。传统RL环境中,状态转移通常带有随机性,需要处理高方差、复杂环境建模等问题;而LLM的状态转移是完全确定的,因为状态是已生成的token,动…

作者头像 李华
网站建设 2026/9/2 16:58:15

HyperCeiler完整安装教程:让HyperOS更强大的终极指南

HyperCeiler完整安装教程:让HyperOS更强大的终极指南 【免费下载链接】HyperCeiler Make HyperOS Great Again! 项目地址: https://gitcode.com/gh_mirrors/hy/HyperCeiler 想要让你的HyperOS系统变得更加强大吗?HyperCeiler作为一款专为HyperOS设…

作者头像 李华