Spring异步:@Async注解

使用@Async前需要开启异步支持:@EnableAsync 注解和XML方式

@Async返回值的调用:需要使用Future包装

  1.如果没有使用Future包装,能立马返回信息,但是返回的信息是异步方法没执行完的,一般是null。

  2.Future.get()方法获取异步的返回值。如果异步没有执行完成,那么会等到异步完成时调用。

@Async与@Transaction一起使用时,事务是无效的。如果要事务有效,需要在另外一个类中写事务的代码。

@Async的异常处理:可用Future.get()来获取异常。
        方法一:异步方法中捕获异常,用Future包装异常信息
        方法二:直接try-catch Future.get()

异步方法和调用类不要在同一个类中方法名 (和事务一样),因为同一个类中调用方法的话会略过代理进行直接调用

必须是 public ( 和事务一样)用public修饰才能被进行代理

@Async和@PostConstruct不能同时在同一个类中使用

Spring异步-@Async注解的更多相关文章

  1. Spring中@Async注解实现“方法”的异步调用

    原文:http://www.cnblogs.com/zhengbin/p/6104502.html 简单介绍: Spring为任务调度与异步方法执行提供了注解支持.通过在方法上设置@Async注解,可 ...

  2. 如何在项目中使用Spring异步调用注解@Async

    本文主要介绍如何使用Spring框架提供的异步调用注解@Async,异步线程池配置.异常捕获处理. 开启@Async注解支持 使用@Async注解的之前,必须在项目中启动时调用@EnableAsync ...

  3. 使用Spring中@Async注解实现异步调用

    异步调用? 在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕,继 ...

  4. Spring使用@Async注解

    本文讲述@Async注解,在Spring体系中的应用.本文仅说明@Async注解的应用规则,对于原理,调用逻辑,源码分析,暂不介绍.对于异步方法调用,从Spring3开始提供了@Async注解,该注解 ...

  5. spring使用@Async注解异步处理

    1. 何为异步调用?在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行 ...

  6. Spring异步调用注解@Async的使用

    1.pom依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...

  7. 异步任务spring @Async注解源码解析

    1.引子 开启异步任务使用方法: 1).方法上加@Async注解 2).启动类或者配置类上@EnableAsync 2.源码解析 虽然spring5已经出来了,但是我们还是使用的spring4,本文就 ...

  8. 关于Dubbo和Spring异步注解@Async的冲突

    项目中难免会有异步处理的需求,像异步记录日志啦,异步发送邮件啦,而Dubbo又是现在主流的分布式框架,所有异步+Dubbo的组合是再所难免的 但博主是实践中发现Dubbo的服务并不能很好的跟Sprin ...

  9. spring boot @Async异步注解上下文透传

    上一篇文章说到,之前使用了@Async注解,子线程无法获取到上下文信息,导致流量无法打到灰度,然后改成 线程池的方式,每次调用异步调用的时候都手动透传 上下文(硬编码)解决了问题. 后面查阅了资料,找 ...

随机推荐

  1. 线程与全局解释器锁(GIL)

    一.线程概论 1.何为线程 每个进程有一个地址空间,而且默认就有一个控制线程.如果把一个进程比喻为一个车间的工作过程那么线程就是车间里的一个一个流水线. 进程只是用来把资源集中到一起(进程只是一个资源 ...

  2. JavaScript周报#184

    This week’s JavaScript news Read this issue on the Web | Issue Archive JavaScript Weekly Issue 184Ju ...

  3. Drupal7安装注意事项

    1.在php.ini中将max_execution_time = 2400,memory_limit = 256M

  4. C# 后台解析json,简单方法 字符串序列化为对象,取值

    如果后台是一个JSON的字符串格式如下: string str = "{\"Success\":true,\"Msg\":\"成功!\&qu ...

  5. jQuery 所有版本在线引用

    jquery-3.1.1(最新) 官网jquery压缩版引用地址: <script src="https://code.jquery.com/jquery-3.1.1.min.js&q ...

  6. GitHub初步探索-1-使用本地代码管理工具,简化上传的过程

    使用GitHub对于我们写Java的同志们来说是一个非常好的代码存储的方式,但是因为是全英文的,操作起来有一点复杂,所以我不是经常使用 ,但是最近代码越敲越多,再加上老师要求,希望使用比较简单的方法来 ...

  7. C# Winform选项卡集成窗体

    知识要点:利用反射动态的加载窗体到对应的TabPage的. using System; using System.Collections.Generic; using System.Component ...

  8. C#写入文本文档

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. where T : class泛型类型约束

    类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型where T : class T必须是一个类(class)类型where T : ne ...

  10. CAShapeLayer的使用[2]

    CAShapeLayer的使用[2] CAShapeLayer支持的动画类型有如下这些. ------------------------------------------------------- ...