浏览 2808 次
锁定老帖子 主题:Spring AOP嵌套顺序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-17
最后修改:2011-05-17
public interface FooService { public void saveFoo(String name, int age); }在切入FooService业务方法的Aop Aspect中,我们要调用JBPM中一些方法推动流程,因此会有持久化的操作, public class WorkFlowService { public Object completeTask(ProceedingJoinPoint call, String name, int age) throws Throwable { //...... //Invoke JBPM method //...... return call.proceed(); } }对于FooService,我们配置Spring事务管理来管理关于持久化的操作,问题来了,在执行FooService的saveFoo方法时,从控制台的日志看出Spring开启一个事务,saveFoo方法结束时,关闭了此事务,在调用completeTask进行JBPM操作时,Spring又开启了另外一个事务,我们希望的是saveFoo和completeTask在同一个事务中,因为Spring事务管理也是AOP的应用,如果方法调用流程如下 引用 Transaction AOP Begin Transaction
WorkFlowService AOP Invoke completeTask before FooService Invoke saveFoo WorkFlowService AOP Invoke completeTask after Transaction AOP Commit Transaction 那就需要Spring的事务AOP在最外层,就可以保证一个事务,所以就需要指定Spring AOP嵌套顺序,order数值越小就在更外层 <aop:aspect order="10"> ...... </aop:aspect> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |