Spring的事务控制XML配置

这次的Spring的事务控制是我在JdbcTemplate的配置基础上进行配置的,重复内容我就
不在书写了。下面是XML文件增加的内容。

	<!--Spring基于XML的声明事务控制-->
	<!--配置事务管理器-->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!--配置事务的通知-->
	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="*" propagation="REQUIRED" timeout="-1" read-only="false"></tx:method>
			<tx:method name="find*" propagation="SUPPORTS" timeout="-1" read-only="true"></tx:method>
		</tx:attributes>
	</tx:advice>
	
	<!--配置AOP-->
	<aop:config>
		<!--配置切入点表达式-->
		<aop:pointcut expression="execution(* com.xzp.dao.impl.*.*(..))" id="pc"></aop:pointcut>
		<!--配置事务通知和切入点表达式的关联-->
		<aop:advisor advice-ref="transactionAdvice" pointcut-ref="pc"></aop:advisor>
	</aop:config>

首先配置的就是事务管理器,使用的类是DataSourceTransactionManager,需要向它注入数据库连接的信息(dataSource)。
接下来就是配置事务的通知,它用transaction-manager而不是ref来引用事务管理器,下面的tx:method的标签就是配置事务的属性。

isolation:配置事务的隔离级别,默认值DEFAULT,使用数据库的默认隔离级别
propagation:配置事务的传播行为,默认值REQUIRED(增删改),SUPPORTS(查询)
timeout:指定事务的超时时间,默认值-1(永不超时),可以指定其他时间,单位为秒
read-only:配置是否只读事务,默认值false
rollback-for:用于指定一个异常,当执行产生该异常时,事务回滚,产生其他异常时,事务不回滚。没有默认值,任何异常都回滚
no-rollback-for:用于指定一个异常,当执行产生该异常时,事务不回滚,产生其他异常时,事务回滚。没有默认值,任何异常都回滚

其中name属性的 * 是指所有方法,find* 是指find开头的所有方法,后者比前者的优先级高,我们用这种配置来区别增删改和查询

配置完这些,然后就是AOP的配置,仅仅俩步就完成,配置切入点表达式和切入点表达式与事务通知的关联。

到这里,基本的事务配置就完成了。

此文章为我个人的学习笔记总结,自用!

发布了29 篇原创文章 · 获赞 3 · 访问量 882

猜你喜欢

转载自blog.csdn.net/weixin_44616792/article/details/96497249