如何使spring AOP方法设置为事务不回滚? 15
我对一个处于事务中的DAO的方法(DAO方法注解为@Transactional(propagation=Propagation.SUPPORTED)进行AOP,在AOP方...
我对一个处于事务中的DAO的方法(DAO方法注解为@Transactional(propagation = Propagation.SUPPORTED)进行AOP,在AOP方法中的实现的是插入数据库某表一条数据。我希望达到的目的是:DAO方法不论是否回滚,AOP方法的插入操作不回滚。因此我在AOP方法前设置了@Transactional(propagation = Propagation.NOT_SUPPORT),但发现并不管用。如果DAO方法回滚,则AOP方法也回滚;如果DAO方法不回滚,则AOP方法也不回滚。请问,我的这个要求能否达到?谢谢!
展开
3个回答
展开全部
楼上两位说的都很对,你的方式是将AOP的切点设置在DAO层中,但如此事务必然会回滚你的DAO同时回滚你的AOP方法;
而你这样的需求应该将两个过程解耦,DAO应该处于最底层,将AOP的切点移到DAO层之上。
而你这样的需求应该将两个过程解耦,DAO应该处于最底层,将AOP的切点移到DAO层之上。
追问
谢谢 可是我的想法是 在数据库中建一张表记录所有CRUD的SQL语句,问题是处于DAO层之上的SERVICE层才是SQL语句被创造出的地方,我在SERVICE层上切面截取不到SQL,完成不了它的使命啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
由于你的DAO方法设置了回滚, 而你AOP的切点又是处于DAO方法中, 即DAO包含了你的AOP切点 所以按我的理解 你的要求应该达不到
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在程序中多加一层,比如叫“service”,用service的方法包装dao的方法,然后在service的方法上做aop。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询