<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- 该sessionFactory是HibernateTransactionManager类的属性名,必须这么写 -->
<property name="sessionFactory">
<!-- 指定需要管理事务的SessionFactory,即上面配置的 -->
<ref bean="sessionFactory"/>
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* com.softeem.dao.daoimp.*.*(..))"/>
<!--
定义通知者(即advisor,它与aspect一样,它是由Pointcut与Advice组成的),一般用于事务的配置
* pointcut-ref:指定要使用的Pointcut,这里指定id即可
* advice-ref:指定Advice,这里指定id即可
* <aop:advisor>的含义就是将哪个Advice应用到约定的范围(即Pointcut指定的)上去
-->
<aop:advisor pointcut-ref="allManagerMethod"
advice-ref="txAdvice"/>
</aop:config>
</beans>