<aop:pointcut表达式语法问题

现在打算改用spring3,在设置aop管理事务时,碰到表达式语法的问题,我的类目录结构基本如下

com.taoists.base.user.service.impl.UserMgrImpl.java
com.taoists.sale.order.service.impl.OrderMgrImpl.java

表达式是这样写:expression="execution(* com.taoists.*.service..*(..))"
或者这样写: expression="execution(* com.taoists.*.service.impl.*.*(..))"

另外,com.taoists.core包下还有很多工具类,如文件上传,邮件发送等,
com.taoists.core.utile.mail.SendMail.java
com.taoists.core.utils.upload.FileUpload.java
这些工具类是否需要加入aop拦截中?

谢谢

3个回答

你这里需要通配两级目录,需要这样写:
expression="execution(* com.taoists.*.*.service..*(..))"

工具类不需要加入,如果service中有工具类调用,那已经处在事物之中了,所以不需要。

expression="execution(* com.taoists.*.service.impl.*.*(..))"

这样写

工具类不需要

这个样写[code="java"]expression="execution(* com.taoists.*.service.impl.*.*(..))"
[/code]例如我之前写的[code="java"] <!-- 配置事务管理器 -->




<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED"/>
        <tx:method name="del*" propagation="REQUIRED"/>
        <tx:method name="modify*" propagation="REQUIRED"/>
        <tx:method name="*" read-only="true"/>
        <!--read-only="true 脏数据只读,提高效率  -->
    </tx:attributes>
</tx:advice>

<!-- 那些类的哪些方法参与事务 -->
<aop:config>
     <!--如果这里配置错了可能进行回滚,所以能看到sql语句,但是数据库是没数据的  -->
    <aop:pointcut id="allManagerMethod" expression="execution(* com.zxt.usermsg.manager.*.*(..))"/>
    <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>


[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问