Spring学习笔记【part11】TX注解开发

【 ‌infrastructure】【数据中心】【AI infra】第十篇 智能计算数据中心解决方案集成测试和交付知识体系01 编号类型领域模块子模块学科知识点及详细数学建模与数值设计(推导/边界/示例)关联知识、标准、法律法规、论文、工业实践1.1架构智算集成总体拓扑业务/管理/数据/参数面分离系统架构、队列论、网络流四平面隔离:业务面带宽B_b、数据面B_d(对象/数仓ETL)、参数面B_p(NCCL AllReduce)、管理面B_m(Prometheus/API)。总成本C=Σ(N_server·C_s+N_sw·C_sw+N_dpu·C_dpu)+C_power;约束B_p≥模型梯度量G/t_step。示例:千卡A100、 阅读详情

Spring 学习笔记 Part11

1. 开启spring对注解事务的支持

xml方法开启方式

<tx:annotation-driven transaction-manager="transactionManager"/>

纯注解方式开启方式 @EnableTransactionManagement

@Configuration
@EnableTransactionManagement
public class SpringConfiguration {
       
}

2. 注解事务的新标签

@EnableTransactionManagement:开启注解开发方式管理事务

@Transactional:声明式事务管理,可以贴在类上或贴在单独的方法上,被贴的类方法或者单独方法将能会被spring事务管理器管理事务

属性:(跟xml配置一样,在上节part10详细介绍过)

在这里插入图片描述

3. 完整回顾注解开发

3.1 config包

SpringConfiguration.java

@Configuration
@ComponentScan("com.swz")
@Import({JdbcConfig.class,TransactionConfig.class})
@PropertySource("classpath:jdbcConfig.properties")
@EnableTransactionManagement
public class SpringConfiguration {
    
}

JdbcConfig.java

public class JdbcConfig {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean("template")
    public JdbcTemplate createJdbcTemplate(DataSource ds){
        return new JdbcTemplate(ds);
    }

    @Bean("ds")
    public DataSource getDataSource(){
        DriverManagerDataSource ds = new DriverManagerDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return ds;
    }

}

TransactionConfig.java

public class TransactionConfig {

    // PlatformTransactionManager是接口,DataSourceTransactionManager是实现类

    @Bean("txManager")
    public PlatformTransactionManager getDataSourceTransactionManager(DataSource ds){
        return new DataSourceTransactionManager(ds);
    }

}

3.2 Service包

accountServiceImpl.java

@Service("accountService")
public class AccountServiceImpl implements AccountService {

    @Autowired
    private AccountDao dao;

    @Transactional(propagation = Propagation.REQUIRED,readOnly = false)
    @Override
    public Account findAccountById(Integer accountId) {
        return dao.findAccountById(accountId);
    }

    @Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
    @Override
    public void transfer(String sourceName, String targetName, Float money) {
        Account source = dao.findAccountByName(sourceName);
        Account target = dao.findAccountByName(targetName);
        source.setMoney(source.getMoney()-money);
        target.setMoney(target.getMoney()+money);
        int i=1/0;
        dao.updateAccount(source);
        dao.updateAccount(target);
    }
}

3.3 Dao包

AccountDaoImpl.java

@Repository("accountDao")
public class AccountDaoImpl implements AccountDao {

    @Autowired
    private JdbcTemplate template;

    @Override
    public Account findAccountById(Integer accountId) {
        return template.queryForObject("select * from account where id = ?",new BeanPropertyRowMapper<Account>(Account.class),accountId);
    }

    @Override
    public Account findAccountByName(String accountName) {
        List<Account> accounts = template.query("select * from account where name = ?", new BeanPropertyRowMapper<Account>(Account.class), accountName);
        if(accounts.isEmpty()){
            return null;
        }
        if(accounts.size()>1){
            throw new RuntimeException();
        }
        return accounts.get(0);
    }

    @Override
    public void updateAccount(Account account) {
        template.update("update account set name=?,money=? where id=?",account.getName(),account.getMoney(),account.getId());
    }
}

3.4 其他

jdbcConfig.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

Test.java

public class AccountServiceTest {
    public static void main(String[] args) {

        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        AccountService service = ac.getBean("accountService", AccountService.class);
        service.transfer("aaa","bbb",100f);

    }
}

到此,spring基础知识的学习先告一段落。

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04 编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017) 阅读详情

相关推荐

Android医疗系统全栈开发拆解:SpringBoot+JWT+乐观锁实践

医疗信息化系统通常涉及患者、医生、管理端三端协同,其核心难点不在于界面布局,而在于业务闭环的打通与数据安全边界。一套完整的全栈方案往往基于Android客户端与Java服务端的REST接口通信,通过JWT令牌实现角色鉴权,用乐观锁应对并发抢号冲突。在工程实践上,这类项目常采用单Activity多Fragment管理页面状态,配合Retrofit+OkHttp封装网络层,后端以SpringBoot提供统一返回体与拦截器机制。此类架构常见于高校毕设、院内预约与电子病历系统,能有效支撑挂号、看诊、开方、缴费的完整

weixin_31155097的博客 235

TX事务注解说明

TX事务: @Transactional : 后面设置事务隔离级别。 需要 创建事务管理对象 之后再扫描注解即可。

csdndd521的博客 456

UVM实战 卷I学习笔记1——简单的UVM验证平台:只有driver

目录验证平台的组成最简单的验证平台——只有driverUVM如何搭建driver:加入factory机制加入objection机制加入virtual interface 个人《UVM实战卷I》学习随手笔记,此书作者:张强 验证平台的组成 一个验证平台要实现的基本功能: 模拟DUT的各种真实使用情况——给DUT施加各种激励→driver实现激励功能; 根据DUT的输出判断DUT行为是否与预期符合→scoreboard(也称为checker)——需注意判断的东西和判断的标准是什么; 收集DUT的输出并传递

weixin_41979380的博客 3891

Java学习框架之spring37天(--AOP 注解使用-- 事物tx的注解使用;)

第一步: 在Application.xml的配置文件中 声明启动注解:   &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc...

博客 451

二维otsu算法python_OpenCV-Python系列之OTSU算法

上一个教程中,我们谈到了关于图像二值化的两种方法,一种是固定阈值法,另一种是自适应阈值法,总的来说,自适应阈值法在某些方面要由于固定阈值法,但还没完,这次我们将隆重介绍我们的重量级选手,也就是OTSU算法(又称为大津算法和最大类间方差法)。最大类间方差法是1979年由日本学者大津提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU,是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像...

weixin_28834169的博客 1426

YOLO26创新改进 | 全网独家创新篇、小目标检测专属 | AAAI 2025 | 引入HS-FPN中的HFP和SDP创新点,从频域增强小目标特征,淘汰FPN进行升级,助力YOLO26有效涨点

本文提出HS-FPN特征金字塔网络,通过高频感知模块(HFP)和空间依赖感知模块(SDP)优化YOLO26模型。HFP利用高通滤波器增强小目标的高频特征,SDP捕获相邻像素的空间依赖关系。在AI-TOD等小目标检测数据集上,HS-FPN相比传统FPN显著提升性能。文章详细介绍了HFP和SDP的模块结构、核心代码实现,以及如何在YOLO26中集成这两个模块的配置方法,提供了多个版本的yaml文件配置方案。实验结果表明该方法能有效改善微小目标检测效果。

Ai缝合怪、助力小伙伴高效发论文 208

数据库事务和@Transaction注解的使用

事务的基本要素 1. 原子性 :事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2. 一致性 :事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 3. 隔离性 :同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束

qq_42831771的博客 1146

实战优化!C#上位机串口通信卡顿问题:超时机制+数据缓存方案

串口名</param>/// <param name="baudRate">波特率

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1065

spring事务配置注解和tx的两种方式

大家都知道spring事务配置有5中,通常用的两种在下面 基于@Transactional注解的 <!-- MyBatis begin --> <!-- 1、mybatis文件配置,扫描所有mapper文件 --> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> ...

qq_37272886的博客 1857

安装 miniconda linux

安装 miniconda linux

jacke121的专栏 1万+

【数字孪生工业应用实战】第2篇:数字孪生系统架构设计与技术选型——从“作秀”到“实干”的骨架构建

本文系统剖析了数字孪生系统从“作秀”到“实干”的架构设计关键。针对多数项目在POC转生产时因架构混乱、选型盲目而失败的问题,深入阐述了四层分层架构(感知层、传输层、模型层、应用层)的设计原则,重点解析了感知层的异构适配与边缘预处理、传输层的异步解耦与多模式通信等工程细节。结合OPC UA、MQTT、EdgeX Foundry等主流技术选型对比,以及汽车焊装车间边缘智能网关的实战代码,提供了从零搭建微型孪生系统的完整指导。旨在帮助工程师建立清晰的选型决策逻辑,构建稳定、可演进的数字孪生“骨架”。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 270

Spring基于注解实现事务管理

在《Spring基于XML实现事务管理》一节中,我们通过 tx:advice 元素极大的简化了 Spring 声明式事务所需的 XML 配置。但其实我们还可以通过另一种方式进行进一步的简化,那就是“使用注解实现事务管理”。 在 Spring 中,声明式事务除了可以使用 XML 实现外,还可以使用注解实现,以进一步降低代码之间的耦合度。下面我们就来介绍下,通过注解是如何实现声明式事务管理。 开启注解事务 tx 命名空间提供了一个 tx:annotation-driven 元素,用来开启注解事务,简化 Spr

洛卡JAVA架构师每日分享Java架构师知识 1639

【WRF-Urban】使用 NUDAPT 数据集与 BEP/BEP_BEM 方案的 WRF 配置指南

【WRF-Urban】使用 NUDAPT 数据集与 BEP/BEP_BEM 方案的 WRF 配置指南

WW、forever的博客 1964

Java27:SPRING

声明式事务是指使用注解或者XML配置的方式来控制的事务的提交和回滚。开发者只需要添加配置即可,具体事务的实现由第三方框架实现,避免我们直接进行事务操作使用声明式事务可以将事务的控制和业务逻辑分离开来,提高代码的可读性和可维护性区别:编程式事务需要手动编写代码来管理事务而声明式事务可以通过配置文件或注解控制事务。

zzx_nihao的博客 1058

车载诊断架构 --- 车载ECU开发中DTC数量与芯片存储能力的关系及应对策略

本文探讨了汽车电子系统中ECU存储DTC故障码的容量问题及解决方案。作者作为汽车电子工程师,针对台架测试中遇到的DTC存储超限案例展开分析,指出随着汽车智能化发展,ECU需处理的DTC数量激增与芯片存储能力有限的矛盾。文章详细介绍了DTC的存储需求、ECU支持数量与芯片容量的关系,并提出应对策略,通过实际案例验证了方案的可行性。最后强调在ECU开发中需合理分配存储资源,确保关键故障信息不丢失。

Soly_kun的博客 89

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring Boot 2.7 事务配置实战:5个关键参数与2种隔离级别性能影响测试

本文深入解析Spring Boot 2.7中事务配置的5个关键参数与2种隔离级别的性能影响,包括@Transactional注解的timeout、readOnly、propagation等核心参数设置,以及READ_COMMITTED和REPEATABLE_READ隔离级别的性能对比测试数据,帮助开发者优化事务配置,提升应用性能。

weixin_33882452的博客 429

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring中开启事务的第三种:注解配置

Spring中开启事务的第三种:注解配置 步骤 导包 spring-aop-4.3.8.RELEASE.jar spring-aspects-4.3.8.RELEASE.jar 联盟包:com.springsource.org.aopalliance-1.0.0.jar 织入包:com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar ...

Kato_op的博客 1万+

【第九章】 Spring的事务 之 9.4 声明式事务 ——跟我学spring3

9.4  声明式事务 9.4.1  声明式事务概述        从上节编程式实现事务管理可以深刻体会到编程式事务的痛苦,即使通过代理配置方式也是不小的工作量。        本节将介绍声明式事务支持,使用该方式后最大的获益是简单,事务管理不再是令人痛苦的,而且此方式属于无侵入式,对业务逻辑实现无影响。        接下来先来看看声明式事务如何实现吧。 9.4.2  声明式...

jinnianshilongnian的专栏 551

Spring中tx命名空间和配置注解工作原理浅析

context:component-scan的工作原理? 从扫描进程的启动,配置文件,标注的产生等等。。。

RoxLiu的专栏 9870

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

先让我们看代码吧! 以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext.xml如下: … bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"> property name="driverClassName" va

jackyechina的专栏 2万+

transaction缩写为什么是tx_关于transaction的注解继承问题

由于在dao用的是:session 而不是 hibernateTemplate先说一下HibernateTemplate与session的区别使用方法没有多大的区别我们使用HibernateTemplate,有一个很重要的原因就在于我们不想直接控制事务,不想直接去获取,打开Session,开始一个事务,处理异常,提交一个事务,最后关闭一个SessionHibernateTemplate是Hiber...

weixin_34284072的博客 457

Spring-tx-@EnableTransactionManagement注解

xml形式的spring配置使用tx标签来开启事务 而注解形式的spring配置,则使用@EnableTransactionManagement注解 其实本文要说的内容,在该注解的注释当中都有,例如下面这个代码 @Component public class Creater1 { @Autowired JdbcTemplate jdbcTemplate; @Transactional(rollbackFor = Exception.class) public void create() {

文天大人 715

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

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

weixin_33831673的博客 721

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

COME FROM 首先先看配置文件: [html] view plaincopy        bean id="sessionFactory"           class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">           proper

5505

在用注解配置事务时tx:annotation-driven遇到的错误

利用bypy在linux环境下自动上传本地文件到百度云盘 这是我们Linux实验课,老师给我们出的一个实验题,当看到这个题目的时候,我其实就已经能够感受Linux的强大了,用shell脚本来实现一些小功能,简直比C/C++,JAVA 等等方便太多… 话不多说,直接上干货: 首先我们需要有Python环境 如果已经有Python环境,请跳过此步骤。 这里请用sudo权限,尤其是第二个步骤 $ wge...

亡月杂货铺 7797
上一篇: Spring学习笔记【part10】TX事务控制
下一篇: SpringMVC学习笔记【part1】基础配置
Parker7
博客等级 码龄7年 18粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Parker7

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

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

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

打赏作者

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

抵扣说明:

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

余额充值