Spring @Async 使用

本文介绍了Spring框架中@Async注解的使用,探讨了其工作原理和限制。@Async用于实现异步执行,适用于与业务逻辑无关的逻辑。当在方法上添加@Async,Spring会基于proxyTargetClass属性创建代理,并尝试使用线程池执行。然而,@Async有一些限制,如不能用于私有方法,不能在同一类中相互调用。理解这些限制有助于更好地运用@Async进行异步编程。
摘要由CSDN通过智能技术生成

前言:

      任何与业务逻辑没有直接关联的逻辑(横切关注点)或在调用者上下文中不需要响应以确定下一个流或任何业务的逻辑是Asyncronization的理想候选者。在Spring中使用@Async注释使用异步,如果你在方法上使用随机的@Async注释并且认为你的方法将在一个单独的线程中以异步方式调用这是错的。

要知道@Async如何工作的和它的特性,不然你就无法理解异步行为。

@Async 如何工作?

     当在方法上添加@Async注释时,它会基于proxyTargetClass 属性创建该对象的代理,其中定义了@Async(JDK Proxy/CGlib) 。Spring 尝试查找与上下文关联的线程池,将此方法的逻辑作为单独的执行路径提交,如果未找到则会搜索唯一的  TaskExecutor bean或名为taskExecutor的bean使用默认的 SimpleAsyncTaskExecutor。

@Async的限制 

   1.编写一个类并创建方法,将@Async置于该方法之上,如果通过创建本地实例从另一个类中使用该类,那么它将不会触发异步,它必须由Spring @ComponentScan注释扫描或在标记为@Configuration的类中创建。

//被调用方法
import java.util.Map;
import org.sp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值