Springboot项目中用到异步发送邮件,部署线上后,邮件服务器异常,接口异常没有返回值,异步调用没起作用
检查发现是启动类上漏了注解@**EnableAsync
一般失效原因有下列几条:
1.@SpringBootApplication启动类当中没有添加**@EnableAsync**注解。
2.异步方法使用注解@Async的返回值只能为void或者Future。
3.没有走Spring的代理类。因为@Transactional和@Async注解的实现都是基于Spring的AOP,而AOP的实现是基于动态代理模式实现的。那么注解失效的原因就很明显了,有可能因为调用方法的是对象本身而不是代理对象,因为没有经过Spring容器管理。
解决方法:
这里具体说一下第三种情况的解决方法。
1.注解的方法必须是public方法。
2.方法一定要从另一个类中调用,也就是从类的外部调用,类的内部调用是无效的。
3.如果需要从类的内部调用,需要先获取其代理类。
热门文章
- 如何将Python词典保存为CSV文件
- 「3月19日」最高速度22.8M/S,2025年Clash/Shadowrocket/V2ray/SSR每天更新免费节点订阅地址分享
- Pyspark读取hive表数据进行处理,将结果插入到hive及hbase
- 「4月24日」最高速度19.1M/S,2025年Clash/V2ray/SSR/Shadowrocket每天更新免费节点订阅地址分享
- 「4月23日」最高速度22.3M/S,2025年Clash/Shadowrocket/SSR/V2ray每天更新免费节点订阅地址分享
- tensorflow学习笔记(二):tensor 变换
- 可以自己买疫苗去宠物店打吗现在多少钱(自己买的疫苗去宠物店代打)
- 动物疫苗种类及类型图片及价格 动物疫苗种类及类型图片及价格表
- 「3月27日」最高速度22.4M/S,2025年Shadowrocket/V2ray/Clash/SSR每天更新免费节点订阅地址分享
- 猫咪三联和狂犬疫苗价格(猫咪三联和狂犬疫苗价格一样吗)