前提
一个 @Transactional 修饰的方法,在方法内调用另一个用 @Async 修饰的方法,异步执行。
实现
class Test1 {
@Autowired
private Test2 test2;
@Transactional
public void updateA(..) {
//业务..
//调用异步方法
test2.updateB(..);
}
}
class Test2 {
//异步方法
@Async
public void updateB(..) {
update(..)
}
}
注意事项
@Transactional事务注解,操作保证原子性
此注解添加到增删改的方法上或者类上,在使用的使用要注意,外部类调用此类
或者类中的方法,此注解会生效。在本类中或者方法内部,相互调用,注解不生效。
Async异步注解,解耦业务
此注解添加到异步的方法上,被其他类调用,此注解会生效。在本类中或者方法内部,
相互调用,注解不生效。