Spring学习-34:Spring中的事务管理之声明式事务(基于注解)

Spring的事务控制-基于XML的声明式事务控制(下) 53.1。 阅读详情

Spring中的事务管理之声明式事务(基于注解)是基于<tx:annotation-driven/>,它默认查找名称为transactionmanager的事务管理器Bean。

这个很简单,请看例子。

首先,恢复项目环境。详见环境搭建。

1、配置applicationContxt.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:context="http://www.springframework.org/schema/context" 
       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/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 
<!-- 配置属性文件 -->  
<context:property-placeholder location="classpath:jdbc.properties"/>  
<!-- 配置C3P0连接池 -->  
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
    <property name="driverClass" value="${jdbc.driver}"></property>  
    <property name="jdbcUrl" value="${jdbc.url}"></property>  
    <property name="user" value="${jdbc.user}"></property>  
    <property name="password" value="${jdbc.password}"></property>  
</bean>  
<!-- 定义JDBC的模板类 -->  
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
    <property name="dataSource" ref="dataSource"></property>  
</bean>  
<!-- 业务层类 -->  
<bean id="accountService" class="com.js.demo4.AccountServiceImpl">  
    <property name="accountDao" ref="accountDao"></property>  
</bean>  
<!-- 持久层类 -->  
<bean id="accountDao" class="com.js.demo4.AccountDaoImpl">  
    <!-- 注入连接池对象,通过连接池对象去创建JDBC模板 -->  
    <property name="dataSource" ref="dataSource"></property>  
</bean> 
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启注解的事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>  
2、在Service上使用注解AccountServiceImpl:@Transactional


package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
//				int i = 4/0;
				accountDao.in(to, money);
	}
}

该注解有很多属性,大家使用的话就会发现属性名并不陌生:


3、进行测试:

(3.1)有异常:

package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional()
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
				int i = 4/0;
				accountDao.in(to, money);
	}
}

package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional()
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
				int i = 4/0;
				accountDao.in(to, money);
	}
}


(3.2)无异常:

package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional()
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
//				int i = 4/0;
				accountDao.in(to, money);
	}
}

事务测试通过。使用起来很简单,不是吗?





34-spring(ssm及微服务入门,临时) 感谢你的路过,希望学生的笔记能给你一点微不足道的参考(2/100) Java基础思维导图,完整Java体系的链接 1. Spring概述 1.1 什么是框架? 框架(Framework):框(指其约束性)架(指其支撑性),在软件设计中指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。    1、框架本身一般不完整到可以解决特定问题    2、框架天 阅读详情

相关推荐

零成本矩阵玩法:1人运营5个账号的自动化工具链配置(2025全平台实战)

通过“AI内容生产+工具链分发+自动化变现”的组合拳,即使是新手也能实现1人运营5个账号的规模化收益。关键在于选对工具与设计标准化流程。未来,矩阵运营的竞争将聚焦于工具使用效率与数据洞察深度,快人一步者方能抢占先机!

TuFuir的博客 3785

Spring注解驱动开发第34讲——你了解基于注解版的声明式事务吗?

不知不觉,时间已快过一个月了,而这个Spring注解驱动开发系列教程才写到第34讲,实在是说不过去,我向大家宣布一件事情,那就是: 我是一个傻逼! 我是一个傻逼! 我是一个傻逼! 我得承认这样一个事实,但无论如何抱怨,路还是要继续走下去,这可真是一件没有道理的事情。 好吧!回到正文,在这一讲中,我来向大家讲解一下声明式事务,也就是看看Spring用注解是如何来简化对数据库事务的开发的。 搭建声明式事务的环境 是个人都知道,在对数据库进行增删改操作时,必然是要使用到事务的。因此,接下来,我们就来搭建好声明

李阿昀的博客 2738

不只是CPU主频:深入解析英飞凌Aurix TC3xx各外设时钟树(CAN、以太网、Flash时序如何配置)

本文深入解析英飞凌Aurix TC3xx系列微控制器的外设时钟树配置,涵盖CAN、以太网和Flash时序的优化方法。通过详细分析时钟系统架构、关键外设配置及多外设协同设计策略,帮助工程师实现高性能汽车电子控制单元(ECU)开发。特别关注系统时钟的灵活配置与EMC优化技巧,提升系统实时性和可靠性。

weixin_29189373的博客 401

Spring系统学习- 事务之基于注解的声明式事务

什么是基于注解的声明式事务基于注解的声明式事务是Spring框架提供的一种事务管理机制,它允许开发者以声明的方式指定哪些方法应该在事务边界内执行,而不是通过编程方式显式地管理事务开始和结束。这种机制极大地简化了事务管理代码,使得业务逻辑更加清晰,同时也提高了代码的可维护性和可读性。在Spring中,声明式事务主要通过@Tr...

weixin_36959057的博客 157

海思Hi3061M MCU:为高速吹风筒市场注入智能动力

此外,海思还提供了丰富的软件开发工具和生态环境组件,帮助开发者快速实现复杂功能。高速吹风筒因其高效的风力和快速的干燥效果,近年来在市场上越来越受欢迎。然而,传统的高速吹风筒在性能、噪音和使用寿命等方面仍有改进的空间。凭借其高性能、低功耗、低噪声和易用的开发工具,为高速吹风筒市场带来了全新的解决方案。这不仅提高了用户的使用体验,还延长了电机的使用寿命。这不仅减少了电机的电磁噪声,还提高了电机的运行效率。还支持风机顺逆风启动适配多种电阻范围的电机,进一步提高了吹风筒的适用性和灵活性。

2401_83448585的博客 2016

Centos7 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO

在k8s的道路上我们都是小白,每天启动虚机都会遇到各种各样的问题,这不。部署的k8s虚机启动发现操作系统启动异常,提示如下报错信息。进入/dev/mapper目录下,查询目录下路径信息。可以通过对文件系统进行修复操作,操作如下。重启完成后虚机恢复正常登录。

hedao0515的专栏 4583

spring注解版声明式事务

相对于xml版来说,声明式事务的注解版更得我心。 用jdbc操作数据库举例,在导入了aop和spring依赖以外,导入sping-jdbc依赖,先创建配置类TxConfig,在类中注册了三个bean dataSource jdbcTemplate platformTransactionManager 还有@EnableTransactionManagement//开启基于注...

denver1981的博客 139

自动驾驶技术路线之争:纯视觉与多模态融合的成本与性能博弈

本文深入剖析了自动驾驶领域两大主流技术路线——纯视觉与多模态融合的本质差异。文章从成本结构、性能博弈与商业逻辑等多维度展开,揭示了纯视觉方案在硬件成本与数据算力投入上的权衡,以及多模态融合方案在安全冗余与感知稳定性方面的优势。这场技术路线之争,实则是车企在性能、成本与商业化落地之间寻求平衡的综合博弈。

weixin_29038303的博客 390

Spring集成MyBatis 事务管理

前言         spring事务管理包含两种情况,编程式事务、声明式事务。而声明式事务又包括基于注解@Transactional和tx+aop的方式。那么本文先分析编程式注解事务和基于注解的声明式事务。 编程式事务管理使用TransactionTemplate或者PlatformTransactionManager。对于编程式事务spring推荐使用TransactionTemplate。...

Curry的博客 1万+

使用mixamo导入人物动作到unity

导入的材质是withoutSkin时选择Create From Other Model + 选择带withSkin里的。方案二:Textures选择Extract Textures,将文件存放到喜欢的位置(不行继续方案三)2.动画没有动:开个Animation窗口,选择人物的Prefab(Hierachy),查看窗口左侧。方案三:选中素材自带或者导出的Material,接着方案一选择 选中的materials进行转化。选 withSkin,剩下的动作选without Skin)(角色发生位移时出现选项)

big_good_boy的博客 1635

SAP Joule Studio 能不能用来开发 skill:可以,但它开发的是 Joule 语境下的企业级 skill,而不是替代所有 SAP 开发技术的万能锤

SAP Joule Studio 专为开发Joule技能(Joule skills)而设计,这些技能是执行确定性单步业务动作的原子能力。它通过自然语言接口连接SAP和非SAP系统,适合处理边界清晰、可审计的任务(如创建工单、查询发票)。Joule技能作为会话式业务编排层,与ABAP、CAP等核心技术互补而非替代。开发支持低代码和专业代码两种方式,并具备企业级治理能力,但需要相应的BTP订阅和技术基础。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 202

34-35 声明式事务

TODO Spring注解驱动开发第34讲——你了解基于注解版的声明式事务吗? 搭建声明式事务的环境 是个人都知道,在对数据库进行增删改操作时,必然是要使用到事务的。因此,接下来,我们就来搭建好声明式事务的基本环境。 导入相关依赖 首先,在项目的pom.xml文件中添加c3p0数据源的依赖,如下所示。 <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId>

Princess_Y 223

【基础-多选】HarmonyOS鸿蒙应用开发

1、HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力。正确2、可以通过ohpm uninstall 指令下载指定的三方库。错误3、支持模块化开发是指一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,Module中可以包含源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能。这种模块化、松耦合的应用管理方式有助于应用的开发、维护与扩展。正确。

江拥羡橙的博客 1万+

Spring的事务管理

那么什么是事务呢?相信大家都知道事物是怎么一回事吧。为了防止有些人忘记了,现在我在简要的说下什么是事务。 事务其实就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用。比如说我们在淘宝买东西扣钱的时候,这时候我们余额要减少同时库存也要减少,这两个操作要么都完成,要么都不完成。如果一个完成一个不完成,那这样要么用户少了钱要么库存少了件,这就...

a84860537的博客 132

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

34.7 、Spring_事务管理 ,使用注解装配Bean

每一个事务管理器都是一个切面 配置SpringJdbc <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w...

qq_45689826的博客 258

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring框架注解详解

1. 什么是基于Java的Spring注解配置? 给一些注解的例子. 基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用

_William_Cheung的博客 1454

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring声明式事务管理与配置介绍

一、Spring声明式事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机

LzwGlory的专栏 872

Spring整合Hibernate:2、使用Annotation方式进行声明式的事务管理

1、加入DataSourceTransactionManager的命名空间 修改applicationContext.xml文件,增加如下内容: 1 2 ...

chuankangyu5735的博客 87

java 声明式事务,基于Annotation方式的声明式事务

Spring的声明式事务管理还可以通过Annotation(注解)的方式来实现。这种方式的使用非常简单,开发者只需做两件事情:① 在Spring容器中注册事务注解驱动,其代码如下:② 在需要使用事务的Spring Bean类或者Bean类的方法上添加注解@Transactional。如果将注解添加在Bean类上,则表示事务的设置对整个Bean类的所有方法都起作用;如果将注解添加在Bean类中的...

weixin_39577908的博客 454

spring事务管理方式

一 、第一种:全注解声明式事务 Xml代码 复制代码 收藏代码 1."1.0" encoding="UTF-8"?> 2."http://www.springframework.org/schema/beans" 3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4. xmlns:p="htt

we_are_young_on_way的博客 505

AOP的使用场景汇总(权限验证,事务管理,日志,异常处理,性能监控)

aop的使用场景 一般来说aop的使用场景有: 事务管理, 日志操作记录, 异常处理, 缓存(页面缓存,方法缓存/查询缓存,数据缓存(对Entity/数据记录进行缓存)), 权限安全认证, Persistence 持久化, Synchronization 同步, Lazy loading 懒加载, 监控性能(方法执行时间/调用次数) 1.事务管理 <aop:aspectj-autopro...

weixin_38546792的博客 2632

Spring之事务源码理解,Spring4.3.12.RELEASE版本

1、声明式事务,境搭建环。在pom.xml配置文件中新增依赖的jar包,导入相关依赖,数据源、数据驱动、Spring-jdbc模块。如下所示: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

HiterCoder 674

spring 注解 事务,声明事务共存的情况下,先后顺序 order

1 &lt;!-- hibernate --&gt; 2 &lt;bean id="sessionFactory" 3 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt; 4 &lt;property name="dataSource" ref="da.

weixin_34024034的博客 2150

SSM10.3【Spring:基于注解的声明式事务控制】

代码+环境同10.2 以下仅说明不同的地方 1 package com.haifei.service; 2 3 import com.haifei.dao.AccountDao; 4 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframewo...

yubaby 298

Spring注解开发——36、声明式事务-环境搭建

36、声明式事务-环境搭建 1、导入相关依赖 数据源、数据库驱动、Spring jdbc模块 注意:mysql的驱动要和mysql版本对应。 <dependencies> <dependency> <groupId>org.springframework</groupId> &l...

zongx的博客 162
上一篇: Spring学习-33:Spring中的事务管理之声明式事务(基于切面自动代理)
下一篇: Spring学习-35:SSH框架整合之jar包的整理
Yes_JiangShuai
博客等级 码龄10年 149粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值