spring-210729-05---事务操作-Spring声明式事务管理-xml方式

spring-210730-03---Spring5新功能-Webflux-响应式编程-Reactor实现&操作符 spring-210730-03—Spring5新功能-Webflux-响应式编程-Reactor实现&操作符 Reactor有两个核心类,Mono和Flux 操作符 Reactor演示 引入依赖 TestReactor.java Reactor有两个核心类,Mono和Flux 响应式编程操作中,Reactor是满足Reactive规范框架。 Reactor有两个核心类,Mono和Flux,这两个类实现了接口Publisher,提供了丰富的操作符。 1) Flux对 阅读详情

spring-210729-05—事务操作-Spring声明式事务管理-xml方式


在Spring配置文件中进行配置
	1)配置事务管理器
	2)配置通知
	3)配置切入点和切面

演示

UserDao03.java

package com.bgy.spring.dao;
public interface UserDao03 {

    // 多钱
    void addMoney();
    // 少钱
    void reduceMoney();
}

UserDaoImpl03.java

package com.bgy.spring.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpl03 implements UserDao03{

    // 注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 多钱
     */
    @Override
    public void addMoney() {
        String sql = "update t_account set money=money-? where id=?";

        int update = jdbcTemplate.update(sql, "100","1001");
        System.out.println(update);
    }

    /**
     * 少钱
     */
    @Override
    public void reduceMoney() {
        String sql = "update t_account set money=money+? where id=?";

        int update = jdbcTemplate.update(sql, "100", "1002");
        System.out.println(update);
    }
}

UserService03.java

package com.bgy.spring.service;

import com.bgy.spring.dao.UserDao03;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
//@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.REPEATABLE_READ,timeout = -1,readOnly = false)  // 事务注解
public class UserService03 {

    // 注入UserDao03
    @Autowired
    private UserDao03 userDao03;

    /**
     * 转账
     */
    public void accountMoney(){
        userDao03.reduceMoney();

        // 手动创建一个异常,测试事务
        int a=10/0;

        userDao03.addMoney();
    }
}

bean03.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/context http://www.springframework.org/schema/context/spring-context.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">


    <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.bgy.spring"></context:component-scan>


    <!-- 数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/spring_test_210728_01?serverTimezone=UTC&amp;useSSL=false" />
        <property name="username" value="root" />
        <property name="password" value="admin" />
    </bean>


    <!-- 创建JdbcTemplate对象 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!-- 注入DataSource -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>


    <!-- 1)创建事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 2)配置通知 -->
    <tx:advice id="txadvice">
        <!-- 配置事务参数 -->
        <tx:attributes>
            <!-- 指定哪种规则的方法上面添加事务 -->
            <tx:method name="accountMoney" propagation="REQUIRED"/>
            
            <!--<tx:method name="account*"></tx:method>-->
        </tx:attributes>
    </tx:advice>

    <!-- 3)配置切入点和切面 -->
    <aop:config>
        <!-- 配置切入点 -->
        <aop:pointcut id="pt" expression="execution(* com.bgy.spring.service.UserService03.*(..))"/>
        <!-- 配置切面 -->
        <aop:advisor advice-ref="txadvice" pointcut-ref="pt"></aop:advisor>
    </aop:config>
</beans>

TestUser03.java

import com.bgy.spring.service.UserService02;
import com.bgy.spring.service.UserService03;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUser03 {

    /**
     * 测试转账功能
     */
    @Test
    public void test01(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean03.xml");

        UserService03 userService03 = context.getBean("userService03", UserService03.class);
        userService03.accountMoney();
    }

}
spring-210729-03---Spring5新功能-整合JUnit5单元测试 spring-210729-03—Spring5新功能-整合JUnit5单元测试 测试Junit4 测试Junit5 Spring5支持整合JUnit5 第一步:引入Spring相关的依赖 第二步:创建测试类,使用注解方式完成 测试Junit4 TestJunit4.java import com.bgy.spring.service.UserService02; import org.junit.Test; import org.junit.runner.RunWith; import o 阅读详情

相关推荐

从零搭建Obsidian智能知识库:Ollama本地模型与Copilot插件实战指南

本文详细介绍了如何从零搭建Obsidian智能知识库,结合Ollama本地模型与Copilot插件实现高效知识管理。通过本地部署AI助手,用户可以在保证隐私安全的同时,快速检索和整理笔记,提升工作效率。文章涵盖硬件准备、Ollama部署、插件配置及实战技巧,适合需要高效知识管理的专业人士。

weixin_29230773的博客 631

spring-210729-02---事务管理

spring-210729-02—事务管理 事务操作(Spring中事务管理介绍): 1. 事务添加到javaee三层结构中service层(业务逻辑层) 2. 在Spring中进行事务管理操作,有两种方式: 1) 编程式事务管理 2) 声明式事务管理 声明式事务管理: 1) 基于注解方式 2) 基于xml配置文件方式 在Spring进行声明式事务管理时,底层使用AOP原理。 Spring事务管理API: 提供了一个接口,PlatformTransactionManag

白光一的博客 153

从光斑图到锤形优化:一次搞定Zemax双胶合透镜的像散与场曲问题

本文详细解析了Zemax双胶合透镜设计中像散与场曲问题的诊断与优化方法。从光斑图分析到锤形优化技巧,提供了完整的光学设计实战指南,帮助设计师快速定位问题并有效改善系统性能,特别适合光学设计工程师和Zemax使用者参考。

weixin_27134495的博客 233

spring-210728-02---AOP-AspectJ注解-抽取相同切入点&设置优先级

spring-210728-02—AOP-AspectJ注解-抽取相同切入点&设置优先级 相同切入点抽取 UserProxy02.java 多个增强类,同一个方法进行增强,设置增强类优先级 演示 Person.java PersonProxy01.java PersonProxy02.java bean01.xml TestPerson.java 相同切入点抽取 UserProxy02.java package com.bgy.spring.aoptest; import org

白光一的博客 571

【阿里云大模型高级工程师ACP习题集】2.3 优化提示词改善答疑机器人回答质量

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1630

MIMIC数据库基本信息分析

一、MIMIC数据库中26张表介绍 数据库中一共有26张表,记录患者入院的各种信息,每张表的介绍如下所示。 表格名 信息 admission 患者基本信息,比如性别、种族、语言、宗教、婚姻、入院和出院时间、死亡时间等 callout 提供病人准备从ICU转出或者已经从ICU转出时相关信息 caregivers 记录医护人员信息(ID、类型、附加...

m0_37520426的博客 1万+

spring-210730-02---Spring5新功能-Webflux-响应式编程-Java实现

spring-210730-02—Spring5新功能-Webflux-响应式编程-Java实现 什么是响应式编程 观察者模式(演示) ObserverTest.java 尚硅谷视频给的例子 Flow.java Main.java 什么是响应式编程 什么是响应式编程: 简称RP(Reactive Programming) 响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流, 而相关的计算模型会自动将变化的值通过数据流进行传播。 例

白光一的博客 404

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 937

spring-210728-03---JdbcTemplate操作数据库-查询功能

spring-210728-03—JdbcTemplate操作数据库-查询功能 演示 UserDao.java(dao层接口) UserDaoImpl.java(这里实现DQL操作) UserService.java(这里调用dao) TestUser01.java(测试) bean01.xml(Spring配置文件) User.java(实体类) 演示 UserDao02.java(dao层接口) package com.bgy.spring.dao; import com.bgy.spring.e

白光一的博客 369

第44节:cesium 大雾效果(cesium自带)(含源码+视频)

cesium 大雾效果(cesium自带)

qq_29384639的博客 1702

芒果YOLO11改进44:主干Backbone篇之MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

包括YOLOv5、YOLOv7、YOLOv8等模型改进 370

spring-210724-04--IOC容器--Bean管理XML方式-注入空值和特殊符号

spring-210724-04–IOC容器–Bean管理XML方式-注入空值和特殊符号 beantest21072401.xml(笔记在注释中哦) TestBean21072401.java beantest21072401.xml(笔记在注释中哦) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h

白光一的博客 319

前后端面试题【目录】

工作时候扭螺丝,面试时候造火箭,现状就是如此。不管是背八股文,还是掌握了知识的精华,对答如流才是硬道理。本专栏就是要集具前端精华,规范、算法、架构、封装、原理等一并汇集,让前端的小伙伴有个思路。, 欢迎一起交流,并非常期望您能够提供有价值的学习资料。

大剑师兰特的GIS世界 1836

spring-210724-01--IOC容器--Bean管理XML方式-创建对象和set注入属性

spring-210724-01–IOC容器–Bean管理XML方式-创建对象和set注入属性 IOC操作Bean管理(概念) IOC操作Bean管理(基于xml方式) 基于xml方式创建对象 基于xml方式注入属性 set方法注入步骤 测试代码 Book.java bean1.xml TestSpring5.java IOC操作Bean管理(概念) 1. Bean管理就是指两个操作 1)Spring创建对象 2)Spring注入属性 2. Bean管理操作 1)基于xml配置

白光一的博客 313

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

spring-210729-02---Spring5新功能-Nullable注解&函数式注册对象

spring-210729-02—Spring5新功能-Nullable注解&函数式注册对象 演示支持函数式风格 User.java TestUser04.java Spring5框架核心容器支持@Nullable注解 @Nullable可以使用在方法、属性、参数上面, 表示方法返回值可以为空、属性值可以为空、参数值可以为空 Spring5框架核心容器支持函数式风格GenericApplicationContext/AnnotationConfigApplicationContext

白光一的博客 293

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

spring-210727-06--IOC容器--Bean管理注解方式-注入属性@Resource&@Value

spring-210727-06–IOC容器–Bean管理注解方式-注入属性@Resource&@Value 演示@Resource UserDao03.java(@Resource) UserDaoImpl03.java(@Resource) UserService03.java(@Resource) UserService04(@Value) userbean.xml TestUser03.java @Autowired: 根据属性类型进行自动注入 @Qualifier: 根据属性名称进行

白光一的博客 278

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

spring-210730-01---Spring5新功能-Webflux-基本概念

spring-210730-01—Spring5新功能-Webflux-基本概念 SpringWebFlux介绍 异步非阻塞解释 WebFlux特点 比较SpringMVC SpringWebFlux介绍 WebFlux官方文档说明地址: https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html SpringWebFlux介绍: 1)是Spring5中新添加的模块,用于web开发,功

白光一的博客 248

spring-210724-09--IOC容器--Bean管理-作用域(设置单&多实例)

spring-210724-09–IOC容器–Bean管理-作用域(设置单&多实例) scope概念 Courses.java scopebean.xml(设置scope) TestScope.java scope概念 在Spring 中配置文件bean标签里面有一个属性(scope)用于设置单实例,还是多实例 scope属性: singleton:默认值,表示单实例对象 prototype:表示多实例对象 singleton和prototype的区别: 设置singleton:

白光一的博客 240

spring-210724-08--IOC容器--Bean管理-工厂bean

spring-210724-08–IOC容器–Bean管理-工厂bean 工厂bean(FactoryBean) MyFactoryBean.java(实现FactoryBean接口) myfactorybean.xml TestFactoryBean.java 工厂bean(FactoryBean) Spring 中有两种类型的bean,一种是普通bean,一种是工厂bean(FactoryBean) 普通bean: 配置文件中定义bean的类型就是返回类型。 工厂bean: 在配置文件中定义

白光一的博客 231

spring-210729-01---Spring5新功能-整合日志框架

spring-210729-01—Spring5新功能-整合日志框架 log4j2.xml 日志手动输出 Spring5新功能特性地址:https://www.cntofu.com/book/95/33-what-new-in-the-spring-framework.md 特点: 整个Spring5框架基于Java8, 运行时兼容JDK9, 许多不建议使用的类和方法在代码库中删除 Spring 5.0框架自带了通用的日志封装 Spring5已经移除了Log4jConfigListe

白光一的博客 225

spring-210727-07--IOC容器--Bean管理注解方式-完全注解开发

spring-210727-07–IOC容器–Bean管理注解方式-完全注解开发 SpringConfig.java TestUser04.java 创建配置类,替代xml配置文件 SpringConfig.java package com.bgy.spring.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Con

白光一的博客 212

spring-210727-01---AOP-基本概念&底层原理

spring-210727-01—AOP-基本概念&底层原理 什么是AOP 底层原理 什么是AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 AOP是OOP的延续,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 不通过修改源代码的

白光一的博客 211

【项目推荐】基于 SpringBoot3 + Spring AI 的游泳馆管理系统:Agent + RAG + Function Calling 一次学全

它不是玩具 Demo,而是一个「业务 + AI」双主线交织的真实系统——预约业务在跑,AI 客服在旁边实时查库作答,两条线通过 Function Calling、RAG、站内消息串成一体。面试官问「你做过什么 AI 项目」时,你能从业务场景讲到架构取舍,从 RAG 切分参数讲到降级兜底——这和「我调了一下 ChatGPT 的 API」是完全不同的两个段位。项目已包含完整的建表 SQL、初始化数据、部署文档,克隆下来就能跑。获取方式:见文末说明 / 后台回复关键词获取。—— 完 ——

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 347

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 285

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地

无状态,所以任何实例都能处理任何请求,扩容不再需要粘性会话;显式句柄,所以跨调用状态是可审计、可过期的,而不是藏在进程内存里;幂等重放,所以交互式中断在分布式环境下也可恢复,代价是你要自己保证副作用可对账;头部路由,所以网关能在不解析 body 的前提下做治理,而校验 header/body 一致性成了新的安全底线。这些没有一个是在发明新概念。它们是分布式系统里被验证过二十年的老手艺:无状态、显式上下文、幂等、网关治理、fail-fast、可观测。

qq_36021478的博客 144
上一篇: spring-210729-04---事务操作-Spring声明式事务管理-事务参数
下一篇: spring-210729-06---事务操作-Spring声明式事务管理-完全注解式开发
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值