<!-- 配置事务管理器,注意这里的dataSource和SqlSessionFactoryBean的dataSource要一致,不然事务就没有作用了-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
这里是哪些方法需要事务控制,并且同一个类里面没有事务控制的方法,一旦引用到事务控制的方法里面,
自己本身的方法就会成为一个事务,在事务里面,for循环里面调用的方法只能调用一次,要谨记!!!!
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
这里表示切面精确到哪个类
<aop:pointcut expression="execution(* com.travelsky.quick.*.service.*.*(..))" id="pc"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc" />
</aop:config>
这种在service层调用insert*方法时候 这个方法就被事务管理,
这个save方法里 再调用dao层查询了你要的数据时候 开启了session 开启了事务 。
当你执行完了这个save方法 事务自动关闭,session也自动关闭,都是由spring管理的
原文:http://www.cnblogs.com/wangshuai-2s/p/4874893.html