SSH框架学习之旅(四):aop与事务

1.aop概念

aop即面向切面编程。相对于oop而言,aop关注的是散落在各个类中的可重用的与业务无关的代码,例如日志、事务、权限管理相关的代码。使用aop可以将这些代码统一维护起来然后织入到程序中,便于管理。

(1)相关概念

  • aspect:横切面的功能,抽象出类或接口
  • advice:横切面的具体实现,可以设置在before或after之后操作
  • pointcut:切入点,描述切面功能应用的限制,即哪些地方可以切入
  • joinpoint:连接点,组件加入流程的时机,通常有方法调用和属性设置,spring仅支持方法调用

2.事务管理和aop

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sf"></property>
</bean>

<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut expression="execution(* com.lee.service.*.*(..))" id="serviceMethod"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="serviceMethod"/>
</aop:config>

<tx:advice/>标签是横切面的具体实现方法,定义了一些对应的方法。
<aop:pointcut/>定义了切入点是service包下的所有方法。