Spring @Async无法实现异步的解决方案

作者:lxxxzzl 时间:2021-10-22 13:32:46 

Spring @Async无法实现异步

问题原因

项目中存在2个配置文件:springMVC.xml和beanDefines.xml,它们都配置了<context:component-scan base-package="com" />。

在beanDefines.xml还配置了<task:annotation-driven/>。

从启动日志中发现,spring先加载的是beanDefines.xml,后加载的是springMVC.xml。

由于springMVC.xml的context:component-scan覆盖了beanDefines.xml的配置,而<task:annotation-driven/>是否有效是依赖于context:component-scan的配置的。

导致beanDefines.xml配置的<task:annotation-driven/>不起作用了。

解决办法

1、删除beanDefines.xml的<context:component-scan base-package="com" />和<task:annotation-driven/>;

2、springMVC.xml添加配置<task:annotation-driven/>。

@Async不起作用

首先介绍一下如何@Async注解,

1.xml头文件必须配置标记红色部分

Spring @Async无法实现异步的解决方案

2.配置任务和线程池


<!-- 任务及线程池 -->
<task:annotation-driven executor="asyncExecutor" />
<task:executor id="asyncExecutor" pool-size="100-10000" queue-capacity="10"/>
<!-- 注解扫描 -->
<context:component-scan base-package="com.baisq">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>

3.配置spring依赖的jar(不介绍这个了)

4.在你需要异步调用的方法上使用@Async注解

Spring @Async无法实现异步的解决方案

5.但是你可能遇到@Async不起作用的时候

我就遇到了,我的问题是容器启动加载了如下两个xml文件

Spring @Async无法实现异步的解决方案

springmvc.xml文件仅仅配置扫描注解,applicationContext.xml配置了任务和线程池和扫描注解,先加载了applicationContext.xml,后加载了springMvc.xml。

applicationContext.xml为扫描到的类加上@Async的作用(任务和线程池的配置依赖于扫描到的类),然后springMvc加载后的bean覆盖了applicationContext的bean,覆盖掉了@Async的作用,因为springmvc没有配置任务和线程池,

导致@Async没有起到作用。

6.如果你遇到上述问题

检查一下加载的xml文件是否存在覆盖的问题。

来源:https://blog.csdn.net/lxxxzzl/article/details/39735561

标签:Spring,@Async,异步
0
投稿

猜你喜欢

  • 带你一文深入认识Java String类

    2023-10-15 10:55:54
  • java冷知识:javac AbstractProcessor详解

    2022-08-01 19:32:09
  • Java工具类DateUtils实例详解

    2022-08-22 00:40:35
  • java web个人通讯录系统设计

    2022-09-14 11:12:15
  • 深入理解Java中观察者模式与委托的对比

    2023-10-30 18:00:03
  • java线程池ThreadPoolExecutor类使用小结

    2021-09-10 16:22:05
  • IDEA实现添加 前进后退 到工具栏的操作

    2021-08-30 21:34:48
  • Java Idea高效率配置技巧实例解析

    2023-06-05 13:24:42
  • SpringBoot+docker环境变量配置详解

    2022-06-13 07:37:20
  • 关于maven全局配置文件settings.xml解析

    2023-01-08 09:04:04
  • Springboot自带定时任务实现动态配置Cron参数方式

    2023-11-10 10:21:31
  • Flutter利用Hero组件实现自定义路径效果的动画

    2023-06-25 13:46:29
  • springboot 实战:异常与重定向问题

    2022-03-06 15:44:54
  • jenkins安装及其配置笔记

    2022-10-03 11:01:19
  • springboot 使用QQ邮箱发送邮件的操作方法

    2022-03-03 14:36:22
  • SpringBoot文件上传功能的实现方法

    2021-11-23 11:24:27
  • java弹幕小游戏1.0版本

    2021-12-06 04:42:48
  • 详解MyBatis XML配置解析

    2023-11-23 13:02:09
  • springboot集成shiro权限管理简单实现

    2023-10-27 13:39:02
  • java_object的简单使用详解

    2023-08-22 11:35:57
  • asp之家 软件编程 m.aspxhome.com