返回顶部
首页 > 资讯 > 后端开发 > Python >Spring的事务控制实现方法
  • 438
分享到

Spring的事务控制实现方法

2024-04-02 19:04:59 438人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

spring的事务控制实现,供大家参考,具体内容如下 提示:这里使用的是xml的方式配置事务的 前言 例:当银行转账的时候,如果转账和收款的一方出现问题,那么这次的转账则不成功,此处

spring事务控制实现,供大家参考,具体内容如下

提示:这里使用的是xml的方式配置事务的

前言

例:当银行转账的时候,如果转账和收款的一方出现问题,那么这次的转账则不成功,此处如果没有事务管理,那么可能出现一方已经转账成功,另一方却没有收款的问题。为了避免此问题,应当使用到事务管理。

提示:以下是本篇文章正文内容,下面案例可供参考

一、Spring声明式事务控制

示例:

二、使用步骤

1.xml配置

配置如下(示例):

<?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: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.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
">

    <!--  1.加载jdbc.properties  -->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

    <!--  2.配置数据源对象  -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${driver}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${user}"></property>
        <property name="passWord" value="${password}"></property>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="accountDao" class="com.codejams.dao.impl.AccountDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>

<!--    <bean class="com.codejams.controller.DemoTest">-->
<!--        <property name="accountService" ref="accountService"/>-->
<!--    </bean>-->

    <!--目标对象  内部的方法就是切点-->
    <bean id="accountService" class="com.codejams.service.impl.AccountServiceImpl">
        <property name="accountDao" ref="accountDao"/>
    </bean>

    <!--配置平台事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--通知  事务的增强-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--设置事务的属性信息的-->
        <tx:attributes>
            <tx:method name="transfer" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
            <tx:method name="save" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
            <tx:method name="findAll" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/>
            <tx:method name="update*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

    <!--配置事务的aop织入-->
    <aop:config>
        <aop:pointcut id="txPointcut" expression="execution(* com.codejams.service.impl.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
    </aop:config>

</beans>

2.AccountDaoImpl代码

代码如下(示例):

package com.codejams.dao.impl;

import com.codejams.dao.AccountDao;
import org.springframework.jdbc.core.JdbcTemplate;

public class AccountDaoImpl implements AccountDao {

    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void out(String outMan, double money) {
        jdbcTemplate.update("update account set money=money-? where name=?",money,outMan);
    }

    public void in(String inMan, double money) {
        jdbcTemplate.update("update account set money=money+? where name=?",money,inMan);
    }
}

3.AccountServiceImpl代码

代码如下(示例):

package com.codejams.service.impl;

import com.codejams.dao.AccountDao;
import com.codejams.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;

public class AccountServiceImpl implements AccountService {

    //@Autowired
    private AccountDao accountDao;
    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }

    public void transfer(String outMan, String inMan, double money) {
        accountDao.out(outMan,money);
        int i = 1/0;
        accountDao.in(inMan,money);
    }
}

结果展示

手动在这里制造一个异常

此时数据库的状态为两人均为5000

执行后,可以看见这里报了异常,并且数据库的两人的money都没有更改

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Spring的事务控制实现方法

本文链接: https://lsjlt.com/news/165555.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring的事务控制实现方法
    Spring的事务控制实现,供大家参考,具体内容如下 提示:这里使用的是xml的方式配置事务的 前言 例:当银行转账的时候,如果转账和收款的一方出现问题,那么这次的转账则不成功,此处...
    99+
    2024-04-02
  • spring控制事务的三种方式小结
    目录方式一:编码方式(需要修改源代码,基本不会用)方式二:xml配置(不需要改动代码,直接配置xml)方式三:注解spring是如何控制事务的?首先准备环境,目录结构如下 数据库准...
    99+
    2024-04-02
  • Java_Spring之Spring中的事务控制
    目录1 Spring 事务控制要明确的内容2 Spring 中事务控制的 API 介绍2.1 PlatformTransactionManager2.2 TransactionDef...
    99+
    2023-05-14
    Java Spring的事务控制 Spring中的事务控制
  • Spring方法中调用异步方法进行事务控制详解
    Spring 异步事务控制 文章目录 Spring 异步事务控制Spring 事务源码逻辑一、事务拦截器拦截二、进行事务控制三、事务开启 / 回滚 /提交操作四、事务完成,清除事务信息简单总结 异步方法事务控制方案一:自身编码...
    99+
    2023-08-20
    spring java 数据库 mysql
  • python实现事务机制的方法
    这篇文章将为大家详细讲解有关python实现事务机制的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不...
    99+
    2023-06-14
  • spring基于注解配置实现事务控制操作
    目录spring注解配置实现事务控制1、导入相关依赖2、创建spring配置类3、创建JdbcConfig数据源配置类4、创建TransactionConfig事务配置类5、创建jd...
    99+
    2024-04-02
  • spring怎么进行事务控制
    Spring框架中的事务控制可以通过两种方式进行:1. 基于注解的事务控制:- 在需要事务控制的方法上使用`@Transaction...
    99+
    2023-09-29
    spring
  • Spring中的事务控制知识总结
    目录一、环境准备二、基于 XML 的事务控制三、基于注解的事务控制一、环境准备 为了演示 Spring 中的事务控制,我们创建一个空项目,项目目录如下: 导入依赖: <d...
    99+
    2024-04-02
  • 基于XML的Spring声明事务控制
    Spring框架为我们提供好了事务控制器,我们不必自己写事务控制器。下面就详细说明基于XML配置Spring事务控制器的步骤。 1. 配置事务管理器 <!-- 配置事务管理器 ...
    99+
    2024-04-02
  • spring mvc无法支持事务控制如何解决
    这篇文章将为大家详细讲解有关spring mvc无法支持事务控制如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。spring-mybatis.xml 配置<bean id=&qu...
    99+
    2023-05-31
    springmvc 事务控制
  • Spring事务的实现方法与本质是什么
    这篇文章主要介绍了Spring事务的实现方法与本质是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring事务的实现方法与本质是什么文章都会有所收获,下面我们一起来看看吧。一、Spring事务的基础知识...
    99+
    2023-07-05
  • 总结Spring中事务的使用、抽象机制及模拟Spring事务实现
    本篇内容介绍了“总结Spring中事务的使用、抽象机制及模拟Spring事务实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2024-04-02
  • Spring数据库事务的实现机制讲解
    目录事务控制的核心——Connection用AOP技术保持当前的ConnectionService层和Dao层共享Connection事务为什么要切在Service层的理由sprin...
    99+
    2024-04-02
  • spring事务实现的方式有哪些
    Spring事务的实现方式有以下几种:1. 基于注解的方式:使用@Transactional注解来标识需要被事务管理的方法或类。可以...
    99+
    2023-09-28
    spring
  • SpringBoot整合Spring Boot Admin实现服务监控的方法
    目录1. Server端服务开发1.1. 引入核心依赖1.2. application.yml配置文件1.3. Security配置文件1.4. 主启动类2. Client端服务开发...
    99+
    2024-04-02
  • Springbean加载控制实现方法
    目录1. Controller加载控制1.1 Controller加载控制与业务bean加载控制1.2 加载Spring控制的bean的时候排除掉SpringMVC控制的bean(方...
    99+
    2022-12-23
    Spring bean加载控制 bean加载控制
  • JavaScript中实现并发控制的方法
    这篇文章将为大家详细讲解有关JavaScript中实现并发控制的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、并发控制简介在日常开发过程中,你可能会遇到并发控制的场景,比如控制请求并发数。那么在 ...
    99+
    2023-06-15
  • ahooks控制时机的hook实现方法
    目录引言Function Component VS Class ComponentClass ComponentFunction ComponentLifeCycle - 生命周期u...
    99+
    2024-04-02
  • Spring框架 注解配置事务控制的流程
    目录基于注解的事务控制1.配置事务管理器2.在业务层使用@Transactional 注解3.开启 spring 对注解事务的支持4.注解扫描器Spring 注解事务实现机制1.事务...
    99+
    2024-04-02
  • java多线程事务控制怎么实现
    在Java中,可以使用以下方法实现多线程事务控制:1. 使用synchronized关键字:将需要进行事务控制的代码块用synchr...
    99+
    2023-10-11
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作