首页 > 其他分享 >@Async组件的细节说明

@Async组件的细节说明

时间:2023-07-16 21:44:54浏览次数:42  
标签:异步 调用 代理 细节 注解 组件 Async 方法

  • 使用方式

    • 启动类里面使用@EnableAsync注解开启功能,自动扫描

    • 定义异步任务类并使用@Component标记组件被容器扫描,异步方法加上@Async

  • @Async失效情况

    • 注解@Async的方法不是public方法

    • 注解@Async的返回值只能为void或者Future

    • 注解@Async方法使用static修饰也会失效

    • spring无法扫描到异步类,没加注解@Async 或 @EnableAsync注解

      • 调用方与被调方不能在同一个类

        • Spring 在扫描bean的时候会扫描方法上是否包含@Async注解,动态地生成一个子类(即proxy代理类),当这个有注解的方法被调用的时候,实际上是由代理类来调用的,代理类在调用时增加异步作用

        • 如果这个有注解的方法是被同一个类中的其他方法调用的,那么该方法的调用并没有通过代理类,而是直接通过原来的那个 bean,所以就失效了

        • 所以调用方与被调方不能在同一个类,主要是使用了动态代理,同一个类的时候直接调用,不是通过生成的动态代理类调用

        • 一般将要异步执行的方法单独抽取成一个类

    • 类中需要使用@Autowired或@Resource等注解自动注入,不能自己手动new对象

    • 在Async 方法上标注@Transactional是没用的,但在Async 方法调用的方法上标注@Transactional 是有效的

标签:异步,调用,代理,细节,注解,组件,Async,方法
From: https://www.cnblogs.com/xietingwei/p/17558616.html

相关文章

  • Ant design的Table组件报错TypeError: rawData.some is not a function
    [(54条消息)Antdesign的Table组件报错TypeError:rawData.someisnotafunction_清颖~的博客-CSDN博客](https://blog.csdn.net/aaqingying/article/details/118971186)React的组件库,AntDesign之Table系列问题解决。这个问题其实很简单,但也很常见呢~看了网上的其他博文,说不......
  • [微服务学习 --组件] 远程调用 Feign
    一、什么是Feign: Feign是应用在分布式系统中,可以进行远程调用,它使得调用远程服务更为简单和直观。    这个是Feign的基本流程。Feign在调用时可能会产生jdk代理对象,通过代理对象来调用远程的服务。该代理对象不仅可以接收到HTTP请求,而且还可以将相应信息封装为http请求......
  • vue -父子组件值传递
    父组件:是指引用其他组件东西(这里叫attrgroup.vue)子组件:是指被其他组件引用的东西(这里叫category.vue)父组件引用子组件,如下:<template><!--tree属性菜单--><!--tree-node-click是子组件自定义的事件,通过事件触发然后由父组件进行感知获取数据-......
  • [TSG开发日志4]算法组件、个人编写的库文件如何封装成DLL,如何更好地对接软件开发?
    写在前面这个内容确实是我有点疏忽了,我以为做算法的同事应该多少对这方面会有点了解的。但是我想了一下我刚毕业的时候,确实对这方面的理解不深,查了很多资料才勉强搞懂什么意思,也是后来随着工程学习的愈加深入,才渐渐了解了在C++开发中动态链接库的重要性及如何编写。一般在说一个......
  • ckeditor粘贴word图片且图片文件自动上传组件.
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪......
  • ckeditor粘贴word图片且图片文件自动上传组件
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@     page contentType="text/html;cha......
  • vue 组件分享
    应用场景是tab切换,上方显示五个标题,下方区域显示各模块内容分享的原因是这个写法简介父组件如下:<template><Tabsv-model="selected"@on-click="change_item"><TabPanev-for="iteminlist_tab":key="item.name":lab......
  • 界面控件DevExtreme v23.1新版亮点 - 全新的DateRangeBox组件
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中......
  • 【微服务学习-- 组件】 熔断器Hystrix
    一、什么是Hystrix  由于在我们访问页面时,可能会通过服务注册中心,用一个服务去调用另外一个服务,但是可能由于网络原因或者超时访问等情况,导致一个或者一些服务堆积,这样就可能会导致其他服务受到影响甚至崩溃,这种导致服务堆积的现象就被称为雪崩。     为了避免雪崩,N......
  • vue中视频播放组件的安装
    1.在terminal中输入cnpminstallvue-video-player2.安装完成后在main.js中进行配置 importVueCoreVideoPlayerfrom'vue-core-video-player'Vue.use(VueCoreVideoPlayer,{lang:'zh-CN'})3.后续即可正常使用......