spring aop 设置一个advisor 和一个aspect 的冲突。

Kwok 2011-05-13 10:50:44
恩,主要就是:我配置了一个事务的管理advisor 和一个日志管理的aspect,但是当他们切入同一个包的时候,事务就管用了。(其中,之前事务是可以用的。同时,如下,我在第一个config里配置了2个代理分别是事务和日志的是管理service包的,在第二个config里配置了切入其他包的aspect)
目前,情况就是日志的好用,而事务失灵了。抛出异常并不发生回滚了。

请大侠指点高招。

<!-- aop 切入事务管理到 -->
<tx:advice id="txAdvice" transaction-manager="jotm_txManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="mod*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- cglib代理service -->
<aop:config proxy-target-class="false">
<aop:pointcut id="allServiceMethod" expression="execution (* com.sinosoft.perfect.*.*.service.*.*(..))
|| execution (* com.sinosoft.perfect.*.service.*.*(..))"/>
<aop:advisor order="1" advice-ref="txAdvice" pointcut-ref="allServiceMethod" />
<aop:aspect id="loggerAspect2" ref="genericLoggerBean2" order="1000">
<aop:around pointcut-ref="allServiceMethod" method="invoke" />
</aop:aspect>
</aop:config>
<!-- aop 切入日志 -->
<aop:config proxy-target-class="true">
<aop:aspect id="loggerAspect" ref="genericLoggerBean">
<aop:around pointcut="execution(* com.sinosoft.perfect.*.*.action.*.*(..))
||execution(* com.sinosoft.perfect.common.action.*.*(..))" method="invoke" />
</aop:aspect>
</aop:config>

<!-- aop 切入日志 -->
<bean id="genericLoggerBean" class="com.sinosoft.perfect.common.bean.GenericLoggerBean"></bean>
<bean id="genericLoggerBean2" class="com.sinosoft.perfect.common.bean.GenericLoggerBean2"></bean>
...全文
820 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
请问LZ的问题解决了吗?我现在遇到了和你一样的问题,现在找不到解决方案,你可以提供下你的解决方案吗?我的邮箱hhfflhf@gmail.com!在线等答案!谢谢!
空白-键 2011-05-13
  • 打赏
  • 举报
回复
我也想把日志提在aop上,还没动手,帮你顶上,看看是怎么做。
wanli209 2011-05-13
  • 打赏
  • 举报
回复
<!-- cglib代理service -->
<aop:config proxy-target-class="false">
要改成true吗?
beiouwolf 2011-05-13
  • 打赏
  • 举报
回复
你在一个包里用了两种不同的代理,不行的吧?
默认代理是依据接口的
为什么你要给事务配置用cglib代理哪
统一一下

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧