Spring

本文详细介绍了Spring框架中事务管理的配置方法与使用技巧,包括如何通过XML配置事务管理器、如何利用@Transactional注解控制事务边界,并对注解的常用属性进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、spring事物

spring配置中:

 在spring配置文件中引入<tx:>命名空间

<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:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
                                   http://www.springframework.org/schema/beans/spring-beans.xsd
                                   http://www.springframework.org/schema/jee
                                   http://www.springframework.org/schema/jee/spring-jee.xsd
                                   http://www.springframework.org/schema/aop
                                   http://www.springframework.org/schema/aop/spring-aop.xsd

                                   http://www.springframework.org/schema/tx
                                   http://www.springframework.org/schema/tx/spring-tx.xsd

                                   http://www.springframework.org/schema/context
                                   http://www.springframework.org/schema/context/spring-context.xsd"

default-autowire="byType" default-lazy-init="true">

事务管理器的配置:

<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />

</bean>

上面这段配置不足于开启事务行为,它仅仅 是一种元数据,提供给注解了 @Transactional具有事务行为的beans使用。

<tx:annotation-driven />

这个注解是开启事务。

注解使用:@Transactional 注解可以应用于接口定义和接口方法、类定义和类的 public 方法上。

当一个方法中有多个增删改时,使用事务。

@Transactional注解中的一些参数

1.rollbackFor(该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。)

例如:@Transactional(rollbackFor = Exception.class)

2.readOnly(设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。

例如@Transactional(readOnly=true)

3.noRollbackFor(用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。

例如:@Transactional(noRollbackFor=RuntimeException.class) ----指定单一异常类

@Transactional(noRollbackFor={RuntimeException.class, Exception.class} ----指定多个异常类

4.timeout(用于设置事务的超时秒数,默认值为-1表示永不超时。

5.isolation(用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置

@Transactional只能用在public方法上才会有效,在 protected、private 方法上用该注解,随不报错,但没有作用。

在controller类中使用事务注解也能有效,但极其不推荐在

controller中使用该注解。

一般在service中使用@Transactional 注解。

Spring的核心是IOC和AOP  ,IOC是依赖注入和控制反转, 其注入方式可分为set注入、构造器注入、接口注入等等。IOC就是一个容器,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。简单理解就是:JAVA每个业务逻辑处理至少需要两个或者以上的对象协作进行工作,但是每个对象在使用它的合作对象的时候,都需要频繁的new 对象来实现,你就会发现,对象间的耦合度高了。而IOC的思想是:Spring容器来管理这些,对象只需要处理本身业务关系就好了。至于什么是控制反转,就是获得依赖对象的方式反转了。
AOP呢,面向切面编程,最直接的体现就是Spring事物管理。

在控制器上指定新的@RestController之后,就不需要在每个@RequestMapping方法上加 @ResponseBody。

开发Rest服务器端的时候,spring-mvc配置文件只需加入如下一行配置即可。

<context:component-scan base-package="com.psbc"></context:component-scan>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我就是那个大头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值