背景
项目里异步场景很多,比如通知一个不需要马上反馈结果的部件,邮件啦等等。解决这个问题最简单,当时是自己写个Thread
出来。还有用MQ解决。自己写Thread,会用一点技术风险,比尽多线程,平时写的不多,容易出些问题。
开发步骤
Spring异步注解@Async
使用很简单
第一步:
打开@Async开关
<task:annotation-driven />
别跟事务的开关搞混了<tx:annotation-driven/> ,一个task ,一个tx,我遇见一项目,异步注解写的很多,但我发现异步开关都没开哎,又一个敏捷项目。
这里还有很多异步的配置,比如 线程池的配置,我就不写了
第二步:
public class OrderServiceImpl implements OrderService { @Async @Override public ResultDTO SubmitOrder(String orderNo) { *******你的业务逻辑 } } public interface OrderService {
}public ResultDTO SubmitOrder(String orderNo) ;
注意事项: spring的注解,应用了aop的思想,spring默认是jdk动态代理的。所以,开发是要注意在实现接口的类方法上加 注解。
不然你懂的,没反应,也不会报错。
还是jdk动态代理的原理,你别注解乱放,不遵守代理规则,代理就无法生成,注解写了也白写,注不进去啊。