Spring 事务管理配置方法

news/2024/9/14 1:59:02/ 标签: spring, java

Spring中声明式的事务配置方法有两种,一种是注解方式,另一种可能用AOP切片方式来实现。

一、注解方式

  1. 在Spring配置文件中加入配置
    <!-- DataSource配置 --><bean id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close" p:driverClass="${jdbc.driverClassName}"p:jdbcUrl="${jdbc.url}" p:user="${jdbc.username}"p:password="${jdbc.password}" />
    <!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 开启事务注解 --><tx:annotation-driven transaction-manager="transactionManager"/>
  2. 具体应用
    package test.spring.service;import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;import test.spring.Dao.ProductDao;
    import test.spring.model.Product;
    //用注解使用事务
    //propagation事物传递参数,默认为propagation="REQUIRED",表示当有几个方法同时使用时,将视同一个事务处理,为REQUIRES_NEW时,视为多个事务处理
    //Propagation.REQUIRES_NEW 
    @Transactional(propagation = Propagation.REQUIRES_NEW )
    @Service("prodcutService")
    public class ProdcutServiceImpl extends BaseService<Product> implements ProductService {@Autowiredprivate ProductDao prodao;@Override//设置该方法为只读@Transactional (readOnly = true )public Product getPro(int pid) {// 具体业务省略。。。。。。。。。。。。。。。。。。。return null;}}

二、AOP切片方式

  1. spring配置文件中加入
    <!-- DataSource配置 --><bean id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close" p:driverClass="${jdbc.driverClassName}"p:jdbcUrl="${jdbc.url}" p:user="${jdbc.username}"p:password="${jdbc.password}" />
    <!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>
    <!-- 配置事务属性 --><tx:advice id="txAdvice"transaction-manager="transactionManager"><tx:attributes><!-- 以get开头的方法设定为只读 ,还有propagation事物传递参数,默认为propagation="REQUIRED",表示当有几个方法同时使用时,将视同一个事务处理,为REQUIRED_New时,视为多个事务处理 --><tx:method name="get*" read-only="true"  /><tx:method name="find*" read-only="true" /><tx:method name="select*" read-only="true" /><!-- 除上面设定条件的方法外,全部为false,也是默认的设置 --><tx:method name="*" read-only="false" /></tx:attributes></tx:advice><!-- 配置事务的切入点 --><aop:config><!-- 切入点为test.spring.service包下面的所有类的所有方法 --><aop:pointcutexpression="excution(* test.spring.service.*.*(..))" id="txPointcut" /><aop:advisor advice-ref="txAdvice"pointcut-ref="txPointcut" /></aop:config>


 


http://www.ppmy.cn/news/1475588.html

相关文章

IC后端设计中的shrink系数设置方法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 在一些成熟的工艺节点通过shrink的方式(光照过程中缩小特征尺寸比例)得到了半节点,比如40nm从45nm shrink得到,28nm从32nm shrink得到,由于半节点的性能更优异,成本又低,漏电等不利因素也可以…

计算机视觉之ResNet50图像分类

前言 图像分类是计算机视觉应用中最基础的一种&#xff0c;属于有监督学习类别。它的任务是给定一张图像&#xff0c;判断图像所属的类别&#xff0c;比如猫、狗、飞机、汽车等等。本章将介绍使用ResNet50网络对CIFAR-10数据集进行分类。 ResNet网络介绍 ResNet50网络是由微…

苹果入局,AI手机或将实现“真智能”?

【潮汐商业评论/原创】 “AI应用智能手机不就是现在的AI手机。” 当被问到现阶段对AI手机的看法时&#xff0c;John如是说。“术业有专攻&#xff0c;那么多APP在做AI功能&#xff0c;下载用就是了&#xff0c;也用不着现在换个AI手机啊。” 对于AI手机&#xff0c;或许大多…

【链表】算法题(一) ---- 力扣 / 牛客

一、移除链表元素 移除链表中值为val的元素&#xff0c;并返回新的头节点 思路&#xff1a; 题目上这样说&#xff0c;我们就可以创建一个新的链表&#xff0c;将值不为val的节点&#xff0c;尾插到新的链表当中&#xff0c;最后返回新链表的头节点。 typedef struct ListNo…

景联文科技以高质量多模态数据集赋能AI大模型,精准匹配提升模型性能

在人工智能的浪潮中&#xff0c;语料数据如同建筑的基石&#xff0c;其质量、规模和运用策略直接决定了AI模型的表现和应用的广泛性。 景联文科技在AI领域深耕多年&#xff0c;打磨了高质量多模态数据集&#xff0c;致力于为不同训练阶段的算法精准匹配高质量数据资源。 3000万…

【论文速读】| JADE:用于大语言模型的基于语言学的安全评估平台

本次分享论文&#xff1a;JADE : A Linguistics-based Safety Evaluation Platform for Large Language Models 基本信息 原文作者&#xff1a;Mi Zhang, Xudong Pan, Min Yang 作者单位&#xff1a;Whitzard-AI, System Software and Security Lab Fudan University 关键…

如何使用IPython的并行计算能力处理大数据

目录 引言IPython概述 什么是IPythonIPython的特点 并行计算简介 什么是并行计算并行计算的优势 IPython的并行计算功能 IPython.parallel模块IPython并行架构 IPython的安装与配置 安装IPython配置并行环境 IPython并行计算的基础 任务分发与负载均衡核心概念&#xff1a;Cli…

【HarmonyOS】关于官方推荐的组件级路由Navigation的心得体会

前言 最近因为之前的630版本有点忙&#xff0c;导致断更了几天&#xff0c;现在再补上。换换脑子。 目前内测系统的华为应用市场&#xff0c;各种顶级APP陆续都放出来beta版本了&#xff0c;大体上都完成了主流程的开发。欣欣向荣的气息。 学习思路 关于学习HarmonyOS的问题…

AI网络爬虫022:批量下载某个网页中的全部链接

文章目录 一、介绍二、输入内容三、输出内容一、介绍 网页如下,有多个链接: 找到其中的a标签: <a hotrep="doc.overview.modules.path.0.0.1" href="https://cloud.tencent.com/document/product/1093/35681" title="产品优势">产品优…

Python3极简教程(一小时学完)下

目录 PEP8 代码风格指南 知识点 介绍 愚蠢的一致性就像没脑子的妖怪 代码排版 缩进 制表符还是空格 每行最大长度 空行 源文件编码 导入包 字符串引号 表达式和语句中的空格 不能忍受的情况 其他建议 注释 块注释 行内注释 文档字符串 版本注记 命名约定 …

使用Apache Beam进行统一批处理与流处理

Apache Beam是一个开源的统一编程模型&#xff0c;用于定义和执行数据处理流水线&#xff0c;支持批处理和流处理。Beam旨在提供一个简单、可扩展且灵活的框架&#xff0c;适用于各种数据处理任务。本文将详细介绍如何使用Apache Beam进行批处理和流处理&#xff0c;并通过Java…

C++: 链表环形题题解

前言&#xff1a;题目都是leetcode的原题&#xff0c;拿来复习一下链表&#xff0c;并养成解题习惯。 开胃菜&#xff1a; 题目&#xff1a; 分析&#xff1a; 代码实现还要注意一下细节的处理&#xff0c; 1.链表为空&#xff0c;只有一个节点的链表 2.快指针在移动两个节…

【人工智能】-- 搜索技术(状态空间法)

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f348;介绍 &#x1f349;状态空间法 &#x1f348;状态空间的构成 &#x1f34d;状态 &#x1f34d;算符…

【国产开源可视化引擎Meta2d.js】鹰眼地图

鹰眼地图 画布右下角弹出一个缩略导航地图&#xff0c;鼠标点击可以跳到指定位置。 在线体验&#xff1a; 乐吾乐2D可视化 示例&#xff1a; // 显示缩略地图 meta2d.showMap();// 关闭缩略地图 meta2d.hideMap();

云WAF在电子商务领域具体能提供哪些安全功能?

云WAF&#xff08;Cloud Web Application Firewall&#xff09;在电子商务领域提供了一系列关键的安全功能&#xff0c;以保护在线交易平台免受各种网络攻击和威胁。以下是云WAF能够提供的具体安全功能&#xff1a; 实时流量监控与分析&#xff1a;云WAF能够对电子商务网站的流…

Docker容器的生命周期

引言 Docker 容器作为一种轻量级虚拟化技术&#xff0c;在现代应用开发和部署中扮演着重要角色。理解容器的生命周期对于有效地管理和运维容器化应用至关重要。本文将深入探讨 Docker 容器的生命周期&#xff0c;从创建到销毁的各个阶段&#xff0c;帮助读者更好地掌握容器管理…

CV05_深度学习模块之间的缝合教学(1)

1.1 在哪里缝 测试文件&#xff1f;&#xff08;&#xff09; 训练文件&#xff1f;&#xff08;&#xff09; 模型文件&#xff1f;&#xff08;√&#xff09; 1.2 骨干网络与模块缝合 以Vision Transformer为例&#xff0c;模型文件里有很多类&#xff0c;我们只在最后…

windows的远程桌面连接docker

1. Docker容器中运行远程桌面服务 (RDP)&#xff1a;您的Docker容器需要安装和运行远程桌面服务。通常&#xff0c;远程桌面服务在Windows操作系统上可用。如果您使用的是Linux容器&#xff0c;则需要安装一个支持RDP协议的桌面环境和RDP服务器。 2. 开放RDP端口&#xff1a;通…

Apache Flink核心特性应用场景

Flink的定义 Apache Flink是一个分布式处理引擎&#xff0c;用于处理 无边界数据流&#xff0c; 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算如下Flink官网的一张图 Flink 与Spark的区别 Flink 中处…

初学SpringMVC之使用注解开发

先配置 web.xml 文件 1.注册 DispatcherServlet 2. <init-param> 下 <param-value> 放自己创建的 xml&#xff08;标准写法是 xx-servlet.xml&#xff09; 3.映射路径写 / 即可&#xff0c;匹配所有请求 <?xml version"1.0" encoding"UTF-8…