现在打算改用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拦截中?
谢谢
你这里需要通配两级目录,需要这样写:
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]