当前位置:首页 » 存储配置 » spring事务怎么配置

spring事务怎么配置

发布时间: 2024-08-15 23:00:11

‘壹’ spring如何管理事务

Spring提供了多种方式来管理事务,包括使用注解、XML配置和编程方式。

使用注解方式:
1. 在配置文件中启用事务管理器:可以通过配置文件(如applicationContext.xml)中的标签来启用事务管理器。
2. 注解事务:在需要添加事务的方法上添加@Transaction注解,可以设置事务的属性,如传播行为、隔离级别等。

使用XML配置方式
1. 配置事务管理器:在配置文件中定义事务管理器,指定数据源和其他相关属性。
2. 配置事务通知:通过标签配置切入点和通知,指定要应用事务的方法。
3. 配置事务属性:通过标签配置事务的属性,包括传播行为、隔离级别等。

使用编程方式:
1. 获取事务管理器:使用@Autowired或@Resource注解注入事务管理器。
2. 编程式事务管理:在需要添加事务的方法中,使用TransactionTemplate来执行数据库操作,并设置事务的属性,如传播行为、隔离级别等。

无论使用何种方式,Spring事务管理器会在方法执行前开启一个事务,方法执行完成后根据返回值来决定是提交事务还是回滚事务。如果方法中抛出了异常,则事务会自动回滚,否则事务将会提交。

‘贰’ 如何在spring中配置跨数据库的事务

1.使用注解的方式
<?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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 使用annotation定义数据库事务,这样可以在类或方法中直接使用@Transactional注解来声明事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>

2.使用事务管理器来管理
<?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:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<aop:config>
<!-- 切入点指明了在执行com.zxt.service包中的所有方法时产生事务拦截操作 -->
<aop:pointcut id="Methods"
expression="execution(* com.zxt.service.*.*(..))" />
<!-- 定义了将采用何种拦截操作,这里引用到 txAdvice -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="Methods" />
</aop:config>

<!-- 事务通知操作,使用的事务管理器引用自transactionManager -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 指定哪些方法需要加入事务 -->
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<!-- read-only="true":其余方法只读格式,加强其安全性 -->
<tx:method name="*" read-only="true" propagation="NOT_SUPPORTED" />
</tx:attributes>
</tx:advice>

</beans>

‘叁’ spring的事务机制,以及是如何管理的

事务管理可以帮助我们保证数据的一致性,对应企业的实际应用很重要。

Spring的事务机制包括声明式事务和编程式事务。

编程式事务管理:Spring推荐使用TransactionTemplate,实际开发中使用声明式事务较多。

声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关闭连接、事务提交、回滚、异常处理等这些操作都不用我们处理了,Spring都会帮我们处理。

声明式事务管理使用了AOP面向切面编程实现的,本质就是在目标方法执行前后进行拦截。在目标方法执行前加入或创建一个事务,在执行方法执行后,根据实际情况选择提交或是回滚事务。

如何管理的:

Spring事务管理主要包括3个接口,Spring的事务主要是由他们三个共同完成的。

1)PlatformTransactionManager:事务管理器--主要用于平台相关事务的管理

主要有三个方法:commit 事务提交;

rollback 事务回滚;

getTransaction 获取事务状态。

2)TransactionDefinition:事务定义信息--用来定义事务相关的属性,给事务管理器PlatformTransactionManager使用

这个接口有下面四个主要方法:

getIsolationLevel:获取隔离级别;

getPropagationBehavior:获取传播行为;

getTimeout:获取超时时间;

isReadOnly:是否只读(保存、更新、删除时属性变为false--可读写,查询时为true--只读)

事务管理器能够根据这个返回值进行优化,这些事务的配置信息,都可以通过配置文件进行配置。

3)TransactionStatus:事务具体运行状态--事务管理过程中,每个时间点事务的状态信息。

例如它的几个方法:

hasSavepoint():返回这个事务内部是否包含一个保存点,

isCompleted():返回该事务是否已完成,也就是说,是否已经提交或回滚

isNewTransaction():判断当前事务是否是一个新事务

声明式事务的优缺点:

优点

不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解(@Transaction),这种方式没有侵入性。

缺点

声明式事务的最细粒度作用于方法上,如果像代码块也有事务需求,只能变通下,将代码块变为方法。

热点内容
java开发要学习什么技术 发布:2024-11-25 06:20:28 浏览:999
java猿 发布:2024-11-25 06:18:36 浏览:126
如何刷安卓44 发布:2024-11-25 06:18:32 浏览:528
安卓手机怎么限制app时间 发布:2024-11-25 06:14:15 浏览:402
福建虚拟服务器管理软件云服务器 发布:2024-11-25 06:05:46 浏览:105
android加载图片 发布:2024-11-25 06:05:00 浏览:167
linux的ls 发布:2024-11-25 05:47:56 浏览:843
oracle存储过程游标实例 发布:2024-11-25 05:40:32 浏览:804
xpsql2000 发布:2024-11-25 05:20:20 浏览:372
如何设置安卓上拉菜单 发布:2024-11-25 05:20:12 浏览:5