spring 事务 @Transactional注解参数 tx:annotation-driven

用Virtuoso和Abstract完成gds2lef 需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计,把接去数字的pin打上label(text),数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置,那么只使用virtuoso就够了,还想把模拟版图都转成lef就要用到abstract工具。 1.PR boundary+pin 1)在virtuoso中打开layout a) Gui操作: Create->P&R Objects-> 阅读详情

首先修改applicationContext.xml如下:

[java]  view plain  copy
  1. …  
  2. <!-- 定义一个数据源 -->  
  3. <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">  
  4.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  5.         <property name="url" value="jdbc:mysql://localhost:3306/spring_test" />  
  6.         <property name="username" value="root" />  
  7.         <property name="password" value="root" />  
  8. </bean>  
  9.   
  10. <!-- 定义JdbcTemplate的Bean -->  
  11. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"  
  12.         p:dataSource-ref="dataSource">  
  13. </bean>  
  14.   
  15. <!-- 配置事务管理器 -->  
  16. <bean id="txManager"  
  17.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  
  18.         p:dataSource-ref="dataSource">  
  19. </bean>  
  20.   
  21. <!-- enables scanning for @Transactional annotations -->  
  22. <tx:annotation-driven transaction-manager="txManager" />  
  23.   
  24. <!-- 在该Bean的代码中标注@Transactional可以被事务管理器注入 -->  
  25. <bean id="userScore"  
  26.         class="net.hingyi.springDemo.transaction.service.UserScoreServiceImpl"  
  27.         p:userScoreRepository-ref="userScoreRepository_jdbc" />  
  28.   
  29. <bean id="userScoreRepository_jdbc"  
  30.         class="net.hingyi.springDemo.transaction.repository.UserScoreRepositoryImpl"  
  31.         p:jdbcTemplate-ref="jdbcTemplate" />  
  32. …  

 实现类代码:

[java]  view plain  copy
  1. @Transactional  
  2. public class UserScoreRepositoryImpl implements UserScoreRepository {  
  3.   
  4.     private JdbcTemplate jdbcTemplate;  
  5.   
  6.     @Override  
  7.     public UserScore getUserSocore(String userNo) {  
  8.   
  9.     final UserScore us = new UserScore();  
  10.     ...  
  11.     return us;  
  12.     }  
  13.     ...  
  14.   
  15. }  
OK了!以上就实现了简单的事务管理了。现在再稍微了解下@Transactional。
在配置文件中,默认情况下,<tx:annotation-driven>会自动使用名称为transactionManager的事务管理器。

所以,如果定义的事务管理器名称为transactionManager,那么就可以直接使用<tx:annotation-driven/>。如下:

[java]  view plain  copy
  1. <!-- 配置事务管理器 -->  
  2.     <bean id="transactionManager"  
  3.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  
  4.         p:dataSource-ref="dataSource">  
  5.     </bean>  
  6.   
  7.     <!-- enables scanning for @Transactional annotations -->  
  8.     <tx:annotation-driven/>  
<tx:annotation-driven>一共有四个属性如下,
  • mode:指定Spring事务管理框架创建通知bean的方式。可用的值有proxy和aspectj。前者是默认值,表示通知对象是个JDK代理;后者表示Spring AOP会使用AspectJ创建代理
  • proxy-target-class:如果为true,Spring将创建子类来代理业务类;如果为false,则使用基于接口的代理。(如果使用子类代理,需要在类路径中添加CGLib.jar类库)
  • order:如果业务类除事务切面外,还需要织入其他的切面,通过该属性可以控制事务切面在目标连接点的织入顺序。
  • transaction-manager:指定到现有的PlatformTransaction Manager bean的引用,通知会使用该引用
@Transactional标注的位置
@Transactional注解可以标注在类和方法上,也可以标注在定义的接口和接口方法上。
如果我们在接口上标注@Transactional注解,会留下这样的隐患:因为注解不能被继承,所以业务接口中标注的@Transactional注解不会被业务实现类继承。所以可能会出现不启动事务的情况。所以,Spring建议我们将@Transaction注解在实现类上。
在方法上的@Transactional注解会覆盖掉类上的@Transactional。


使用不同的事务管理器
如果我们要程序中使用多个事务管理器(主要是针对多数据源的情况),可以通过以下的方式实现:
Service代码:

[java]  view plain  copy
  1. public class MultiTxService {  
  2.     @Transactional("tran_1")  
  3.     public void addTest(int id){  
  4.           
  5.     }  
  6.     @Transactional("tran_2")  
  7.     public void deleteTest(int id){  
  8.           
  9.     }  
  10.   
  11. }  
applicationContext.xml配置如下: 

[java]  view plain  copy
  1. <bean id="tran_1"  
  2.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  
  3.     p:dataSource-ref="dataSource">  
  4.     <qualifier value="tran_1"/>  
  5. </bean>  
  6. <bean id="tran_2"  
  7.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  
  8.     p:dataSource-ref="dataSource">  
  9.     <qualifier value="tran_2"/>  
  10. </bean>  
经过以上的代码,每个事务都会绑定各自的独立的数据源,进行各自的事务管理。我们可以优化下以上代码,可以自定义一个绑定到特定事务管理器的注解,然后直接使用这个自定义的注解进行标识:

[java]  view plain  copy
  1. @Target({ElementType.METHOD,ElementType.TYPE})  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Transactional("tran_1")  
  4. public @interface CustomerTransactional {  
  5.   
  6. }  
在Service代码中使用:
[java]  view plain  copy
  1. ...  
  2. //使用名为tran_1的事务管理器  
  3. @CustomerTransactional  
  4. public void addTest(String str){  
  5.       
  6. }  
  7. …  
YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图) YOLOv11 由 Ultralytics 在 2024 年 9 月 30 日发布, 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。 阅读详情

相关推荐

suse ha for sap scale-up性能优化场景安装配置

suse ha for SAP安装配置

jetliu05的博客 2134

Spring事务源码解析之tx:annotation-driven标签解析

Spring事务是我们日常工作中经常使用的一项技术,Spring提供了编程、注解、aop切面三种方式供我们使用Spring事务,其中编程式事务因为对代码入侵较大所以不被推荐使用,注解和aop切面的方式可以基于需求自行选择,我们以注解的方式为例来分析Spring事务的原理和源码实现。

0xZzzz的博客 6775

利用makehumancommunity导入人体模型到COMSOL里(需要solidwork)

#makehumancommunity #solidwork #COMSOL

qq_41227634的博客 2157

关于tx:annotation-driven 配置说明

今天在修改别人代码时看到了这个配置很久没用了现在拿出来做个记录,方便以后再次查找annotation-driven  含义就是支持注解,根据前面的前缀(mvc    tx  )就可大体知道其作用&lt;tx:annotation-driven transaction-manager="txManager"/&gt;就是支持事物注解【引用别的文章】首先,&lt;tx:annotation-drive...

qq_39951411的博客 4699

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 462

fpga的希尔伯特变换实现

fpga的希尔伯特变换实现零.实现背景一.希尔伯特实现的基本原理2.实现1)matlab仿真1)fpga滤波器实现实现成本:fpga实现采用VIvado的FIR的IP核, 零.实现背景 因为今明工作项目需要使用到希尔伯特变换来处理问题,所以顺便就把设计流程和代码都整理下来,以便供他人使用。选用Xilinx的7系列板子,Vivado平台。 一.希尔伯特实现的基本原理 希尔伯特变换的物理意义十分简单:...

weixin_42219690的博客 1万+

Spring 事务源码(2)—<tx:annotation-driven/>事务标签源码解析

基于最新Spring 5.x,详细介绍了Spring 事务源码,包括<tx:annotation-driven/>标签源码解析。

终生学习践行者 2927

诊断数据库ODX标准协议ISO22901定义组成部分

综上所述,简略描述了ODX数据库中UML/XML/Text/Check rules具体功能以及详细内容。

Soly_kun的博客 907

Spring Config配置文件中的标签<tx:annotation-driven出现下划线爆红的原因,是因为Spring配置文件的顶部没有正确的引入tx的命名空间

Spring Config配置文件中的标签

小丁的博客 1022

亲测解决This application failed to start because no Qt platform plugin could be initialized.

这个问题是由于环境变量改变或者Qt的路径改变导致,解决办法是在环境变量里面重新添加Qt路径。

狂小虎/Anthony Dave的博客 KuangXiaoHu's Blogs 2919

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了无线充电系统面临的核心挑战,提出LCC补偿网络解决方案,阐述了其恒流输出和输入阻抗解耦原理。通过Simulink分步演示了系统建模过程,包括松耦合变压器、LCC+LC补偿网络、功率变换级搭建以及频率跟踪控制实现。仿真结果表明,LCC补偿系统在气隙变化和负载跳变下能保持输出电压稳定(波动±3%),效率达89%。文章还总结了工程实现要点,并探讨了动态充电、多负载系统等扩展应用。该教程为开发高效智能的无线充电系统提供了实用指导

amy_mhd的博客 61

Spring事务管理---下

本系列文章:Spring事务管理—中Spring事务管理—上Spring事务王国概览前文,我们已经完成了对注解元数据驱动的声明式事务的模拟实现,并且详细分析了模拟实现的流程和原理,下面我将带领各位来看看Spring真正的源码实现,让大家真正掌握Spring事务的精髓。在不使用SpringBoot自动配置的情况下,开启注解元数据驱动的声明式事务有两种方式: 或者在配置类上加上下面这个注解 tx:annotation-driven源码追踪 想要进行测试,可以引入下面这段xml配置: tx:annota

m0_53157173的博客 1151

ROS机器人未知环境自主探索功能包explore_lite总结

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 4460

spring事物

使用步骤: 步骤一、在spring配置文件中引入命名空间  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:tx="http://www.springframework.org/schema/tx"  xsi:schemaLocation="http://www.springframework.org/schem

HappyProgrammer的博客 216

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

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)

在使用SpringMvc的时候,配置文件中我们经常看到annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx、mvc 等也能很直白的理解出来分别的作用。<tx:annotation-driven/> 就是支持事务注解的(@Transactional) 、<mvc:annotation-driven> 就是支持mvc注解的,说...

张鹏的博客 469

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring事务-tx-annotation-driven-的理解

在使用Spring的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx、mvc 等也能很直白的理解出来分别的作用。1 <tx:annotation-driven /> 就是支持事务注解的(@Transactional) 。 <mvc:annotation-driven /> 就是支持mvc注解(Contro...

小枫哥的博客 594

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

声明式事务(注解与纯注解方式)

介绍了使用注解与纯注解的方式来实现声明式事务

凉茶铺的博客 2823

spring控制事务:声明式事务(注解)

声明式事务(注解) spring声明事务的方式,使用注解的方式 @Transactional ⚫ 名称:@Transactional ⚫ 类型:方法注解,类注解,接口注解 ⚫ 位置:方法定义上方,类定义上方,接口定义上方 ⚫ 作用:设置当前类/接口中所有方法或具体方法开启事务,并指定相关事务属性 ⚫ 范例: @Transactional( readOnly = false, timeout = -1, isolation = Isolation.DEFAULT, rollbackFor = {Arithme

fushuai优快云的博客 1751

Spring源码学习(二十)---<tx:annotation-driven/>支持事务注解的(@Transactional)标签解析过程

这里主要是使用org.springframework:spring-beans:5.0.2.RELEASE进行分析 文章目录一. XML配置文件开启tx注解二. TxNamespaceHandler类 1. 查看源码相关的快捷键 快捷键 作用 Ctrl + Shift+i 出现类似于预览的小窗口 Ctrl + Enter (接上步)完全打开源码 Ctrl + 鼠标左键 一步到位打开源码 = Ctrl + Shift+i –>Ctrl + Enter Alt+7 查看类的有.

975

【小平工作日志】Spring事务<tx:annotation-driven/>的理解(Controller使用@Transactional)...

在使用Spring的时候,配置文件中我们经常看到annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx、mvc 等也能很直白的理解出来分别的作用。 <tx:annotation-driven/> 就是支持事务注解的(@Transactional)...

178

关于Spring事务<tx:annotation-driven/>的理解。

转自:http://blog.youkuaiyun.com/catoop/article/details/50067785 http://zhidao.baidu.com/link?url=Sc1tUUqLm_aRA1hfPEQebjPVH-oHlIJjfXwVG82jdwVuFQ3HxbZx0GIZMDQ8Oi3cja1SToTLqTPNI7sGL5fDPa   在使用SpringMvc的时

看不过的黑工坊 3093

@Transactional #tx:annotation-driven #spring-tx #基于注解的声明式事务控制 @FDDLC

测试环境:IDEA 2020.2、MySQL 8.0.16 项目结构: pom.xml的内容(注意:spring-tx依赖aspectjweaver): <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ..

LiuXingchang的博客 523

spring注解事务

spring框架的注解驱动 <!-- 声明事务管理器对象--> <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="mydataSource"></property> </bea

qq_42263473的博客 117

对于spring中事务@Transactional注解的理解

现在spring的配置都喜欢用注解,但是在这之前,还是有必要复习下Spring在xml配置里配置事务 然后咱们再来说看@Transactional 一、如何开启@Transactional支持   要使用@Transactional,spring的配置文件applicationContext.xml中还是要写些东西的,那就看看最流行的两个ORM框架,如何配置,spring所有的事务...

dichengyan0013的博客 243

@Transactional详解

使用步骤: 步骤一、在spring配置文件中引入tx:命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx...

你就像甜甜的益达 2万+
上一篇: Spring ActiveMQ 整合: JMS 事务管理
下一篇: Java事务之八——分布式事务(Spring+JTA+Atomikos+Hibernate+JMS)
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值