从另一个异步方法调用的Spring异步方法

从另一个异步方法调用的Spring异步方法,第1张

从另一个异步方法调用的Spring异步方法

您所描述的是Spring AOP的经典陷阱。

简而言之,为了使Spring能够提供异步行为,它需要在运行时为您的类创建一个代理。然后,代理将在调用代码之前和/或之后执行所需的任何 *** 作。但是在您的情况下,第二种方法未应用代理机制。

当通过Spring将类中的bean注入其他组件时,Spring实际上会注入代理。因此,称为代理的相关方法。但是,当您从类内部调用方法时,SpringAOP的局限性意味着代理永远不会起作用,而是会调用常规方法-没有任何额外功能。

这就是为什么

asyncMethod
总是与调用它的同一类中的其他方法在同一线程上执行。

查看这篇出色的博客文章以及Spring文档的这一部分。

有一些解决问题的方法(请参阅this),它们不需要您重构代码,但是如果您希望无论哪种方式都对异步处理这两种方法,最简单的方法是将第二种方法重构为另一个类。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5488688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存