<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="transactionMgr" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionMgr">
<!-- 定义方法的过滤规则 -->
<tx:attributes>
<!--propagation表示的是事务的传播特性,使用required时,是当检测到add开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务。然后将方法放进去-->
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/> <!--设置回滚的条件Exception-->
<!--如果检测到其它的方法,则给其只读数据库的属性。即当本方法在读时,其它的方法不能再去写了。保证一个事务的完整性。 -->
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 定义一个切入点 -->
<aop:pointcut id="allManagerMethod" expression="execution(* zzc.dao.*.*(..))"/>
<!-- 对切入点和事务的通知,进行适配 -->
<!-- 调用上面配置的事务属性,可以将它给本aop pointcut。-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
<!-- 如果还有其它的定义,则可以再加上pointcut、advisor来定义本切面点的事务逻辑-->
</aop:config>