Python 官方文档:入门教程 => 点击学习
目录spring @Async无法实现异步问题原因解决办法@Async不起作用1.xml头文件必须配置标记红色部分2.配置任务和线程池3.配置spring依赖的jar(不介绍这个了)
项目中存在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注解,
<!-- 任务及线程池 -->
<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>
我就遇到了,我的问题是容器启动加载了如下两个xml文件
springmvc.xml文件仅仅配置扫描注解,applicationContext.xml配置了任务和线程池和扫描注解,先加载了applicationContext.xml,后加载了springMvc.xml。
applicationContext.xml为扫描到的类加上@Async的作用(任务和线程池的配置依赖于扫描到的类),然后springMvc加载后的bean覆盖了applicationContext的bean,覆盖掉了@Async的作用,因为springmvc没有配置任务和线程池,
导致@Async没有起到作用。
检查一下加载的xml文件是否存在覆盖的问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: Spring @Async无法实现异步的解决方案
本文链接: https://lsjlt.com/news/137320.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0