Spring AOP和事务

一、Spring AOP

1.SpringAOP简介

        介绍:AOP:Aspect Oriented Programming,面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。

        AOP利用一种称为“横切”的技术,剖开对象内部,并将公共行为封装到可重用模块,从而减少重复代码,降低耦合。

2.为什么要用AOP

        1.分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

        2.减少代码的重复,各个模块的重用性加强。

        3.降低 模块间的耦合度,提高代码的可操作性和可维护性。

3.AOP的相关术语

       1. 通知(Advice):定义了切点处所要执行的程序代码以及执行时机

       2.连接点(Join point):是在应用执行过程中满足切点范围的具体的点

       3.切点(Poincut):定义切面插入在哪些方法上,确定切面使用范围

       4.切面(Aspect):是指封装横切到系统功能的类,包含通知和切点

       5.织入(Weaving):是把切面插入到目标对象上

4.通知的类型

前置通知

<aop:before>@Before用于配置前置通知。指定增强的方法在切入点方法之前执行
后置通知<aop:AfterReturning>@AfterReturning用于配置后置通知。指定增强的方法在切入点方法之后执行
环绕通知<aop:Around>@Around用于配置环绕通知。指定增强的方法在切入点方法之前和之后都执行
异常抛出通知<aop:AfterThrowing>@AfterThrowing用于配置异常抛出通知。指定增强的方法在出现异常时执行
最终通知<aop:After>@After用于配置最终通知。无论增强方式执行是否有异常都会执行

5.AOP的使用

新增一个日志记录服务类“LogService”,并配置到容器中

引入Spring AOP相关的依赖

在Spring配置文件中加入AOP切面配置

执行结果

二、事务

1.什么是Spring的事务管理

        是通过AOP代理实现的,对被代理对象的每个方法进行拦截,在方法执行前启动事务,在方法执行完成后根据是否有异常及异常的类型进行提交或回滚。

2.事务的基本事务属性

        传播行为(propagation behavior)

        隔离级别(isolation level)

        是否只读(isReadOnly)

        事务超时(timeout)

3.事务的ACID原则

        原子性:一个事务已经是一个不可再分割的工作单位。事务中的全部操作要么都做;要么都不做

        一致性:事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。

        隔离性:事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

        持久性:一个事务一旦提交,它对数据库中数据的改变会永久存储起来。其他操作不会对它产生影响

4.spring事务API介绍:

(1) PlatformTransactionManager【事务平台管理器】

        是一个接口,定义了获取事务【getTransaction】、提交事务【commit】、回滚事务【rollback】的接口

(2)TransactionDefinition【事务定义信息】

        是一个接口,定义了事务隔离级别、事务传播行为、事务超时时间、事务是否只读

5.为什么要事务隔离

        脏读 :在一个事务中读取到了另外一个事务修改的【未提交的数据】,而导致多次读取同一个数据返回的结果不一致

        不可重复读 : 在一个事务中读取到了另外一个事务修改的【已提交的数据】,而导致多次读取同一个数据返回的结果不一致

        幻读(虚读): 一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录

6.具体实现(模拟银行转账业务事务管理 )

        1.在数据库中创建一个表

        2.引入相关依赖

        3.创建模型类

        4.创建Dao接口和实现类

        5.创建service接口和实现类

        6.编写jdbc.properties

        注解方式:

        Spring配置类SpringConfiguration

        配置类JdbcConfig

事务管理器的优点:

        数据一致性

        数据可靠性

        并发控制

        提高性能

ZZZXXXYYYz
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring aop事务同时开启带来的一些问题
小小少年的博客
01-05 1637
最近自己在写一个aop切面,主要是用来记录日志和打印一些信息的,在测试过程中,发现,业务方法在加了事务之后,如果有其他异常抛出,事务并没有回滚,于是,就Google了一把,发现有大佬遇到过这个问题,大部分博客给到的答案是:因为切面的优先级低于事务的优先级,导致事务advisor生成的代理对象被,切面生成的代理对象给覆盖了,需要在切面上加上@Order(1)注解,这样可以保证,切面的优先级较高 我自己忽然间想到之前,遇到过类似的问题,并且也记录到了线上问题模块,按照实际操作之后,确实:在切面上加了@Order
Spring AOP事务的相关陷阱
da sheng 的专栏
07-26 392
1、前言 Spring AOP在使用过程中需要注意一些问题,也就是平时我们说的陷阱,这些陷阱的出现是由于Spring AOP的实现方式造成的。对于这些缺陷本人坚持的观点是:一是每一样技术都或多或少有它的局限性,很难称得上完美,只要掌握其实现原理,在使用时不要掉进陷阱就行,也就是进行规避;二是更进一步讲,我们应该接受这就是技术本身的特点,也说不上什么缺陷,它本身就在“那里”,只是我们要的结果是“这
SpringAOP事务
Mosqiote的博客
05-29 1869
AOP AOP简介 AOP(Aspect-Oriented Programming, 面向切面编程):是一种新的方法论, 是对传统 OOP(Object-OrientedProgramming, 面向对象编程) 的补充.; AOP 的主要编程对象是切面(aspect), 而切面模块化横切关注点. 在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方...
SpringAop事务可以同时配置,并生效吗?
u013891584的博客
08-26 1702
答案是肯定的,可以一起使用!!!! 但是如果只是简单的配置两个注解,就会发现事务会失效,话不多说,直接开始正题: 1。我们从源码角度分析下: @EnableAspectJAutoProxy 往Springbean容器中注入:AnnotationAwareAspectJAutoProxyCreator 看下他的类结构 我们很清楚的看到他是一个bean后置处理器 2.我们再来看看事务 @EnableTransactionManagement 通过 importSelector引入两.
基于SpringAOP事务处理
qq_41365804的博客
03-19 147
一、事务分为:声明式事务和编程式事务,当下要说的便是基于Spring实现的声明式事务 1、1 首先需要知道的关于事务的几个知识点 事务有四个特性:原子性,一致性,隔离性,持久性 在Spring中有专门的事务管理器DataSourceTransactionManager类,也就是一个切面类,在连接数据库进行增删改的联级操作时,事务就会发挥巨大作用,...
spring aop事务练习
03-18
springaop和Synchronized锁在Spring事务管理下,导致线程不安全。
线程池中使用spring aop事务增强
08-25
主要介绍了线程池中使用spring aop事务增强,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring如何基于aop实现事务控制
08-24
主要介绍了Spring如何基于aop实现事务控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring AOP配置事务方法
11-09
Spring AOP配置事务方法,描述了spring事务配置,方便开发应用和数据库的连接管理。
spring基于AOP实现事务
07-30
演示了spring基于AOP代理TransactionProxyFactoryBean实现事务
6、Spring之Bean生命周期~创建Bean(2)
sproutBoy的博客
06-10 693
【代码】6、Spring之Bean生命周期~创建Bean(2)
Spring AI 第三讲Embeddings(嵌入式) Model API 第一讲OpenAI 嵌入
qq_25137131的博客
06-09 912
Spring AI 支持 OpenAI 的文本嵌入模型。OpenAI 的文本嵌入测量文本字符串的相关性。嵌入是一个浮点数向量(列表)。两个向量之间的距离可以衡量它们之间的相关性。距离小表示关联度高,距离大表示关联度低。
springboot与flowable(2):流程部署
游王子的博客
06-10 622
选择建模器应用程序选择要导出的建模点击导出按钮。将导出的文件复制到项目中。
SpringBoot内置数据源
2303_79546217的博客
06-11 445
在我们之前学习在配置文件当中配置对应的数据源的时候, 我们设置的数据源其实都是Druid的数据源, 并且其配置有两种方式, 当然这两种方式都需要我们导入对应的有关 德鲁伊 的依赖才行代码如上, 我们已经将对应的数据库的信息都设置完成了, 但是并没有使用哪两种方式, 来设置其数据源具体是什么。
SpringCloud之Zuul源码解析
qq_36851469的博客
06-10 250
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。Zuul 可以适当的对多个 Amazon Auto Scaling Groups 进行路由请求。其架构如下图所示:Zuul提供了一个框架,可以对过滤器进行动态的加载,编译,运行。过滤器之间没有直接的相互通信。他们是通过一个RequestContext的静态类来进行数据传递的。
springboot连接多个库
sunyingboaini的博客
06-11 192
一个SpringBoot项目,同时连接两个数据库:比如一个是Mysql数据库,一个是oracle数据库(啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的driver-class-name和jdbc-url等即可)注意:连接什么数据库,要引入对应数据库的包。
springBoot多数据源使用、配置
最新发布
qx020814的博客
06-12 329
又参加了一个新的项目,虽然是去年做的项目,拿来复用改造,但是也学到了很多。这个项目会用到其他项目的数据,如果调用他们的接口取数据,我还是觉得太麻烦了。打算直接配置多数据源。使用@DS("数据源名称") ,就能指定使用某一个数据源。就是配置两个数据库信息,后续使用@DS("数据源名称")配置了druid之后,项目运行起来就能访问,然后去另一个数据库系统中取出数据。,可以看见有两个数据源可以使用。所以就去了解和学习了一下。
SpringMVC的工作流程
m0_47743175的博客
06-12 712
SpringMVC的工作流程
SpringBoot Vue Bootstrap 旅游管理系统
scian22的博客
06-12 310
开发环境 jdk1.8,mysql8,nodejs16,navicat,idea。使用技术springboot mybatis vue bootstrap。SpringBoot Vue 旅游管理系统源码,附带环境安装,运行说明。
spring aop事务
08-09
Spring AOP (Aspect-Oriented Programming) 是 Spring 框架中的一个重要特性,它允许开发者通过在应用程序的关注点(横切关注点)上进行模块化的方式来管理横切关注点的行为。横切关注点可以是日志记录、性能监控、事务管理等。 事务是数据库操作中的一种机制,用于确保一系列操作要么全部成功,要么全部事务管理也是通过 AOP 来实现的。Spring 提供了声明式事务管理的隔离级别等属性,而不需要编写繁杂的事务管理代码。 通过结合 Spring AOP事务,开发者可以在应用程序可以将事务管理逻辑抽象成切面,并将其应用到需要确保数据的一致性和完整性。 总结起来,Spring AOP 提供了通过使用 Spring AOP 和声明式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • SpringMVC 814
  • springboot和mybatisplus 365
  • MyBatis 313
  • Spring IOC(把对象交给容器来创建) 38
  • Spring AOP和事务 28

最新评论

  • springboot和mybatisplus

    CSDN-Ada助手: 恭喜您在博客中分享了关于springboot和mybatisplus的内容,这些都是非常有用的技术知识。希望您能继续坚持创作,分享更多关于这两个技术的实践经验和应用案例。同时也建议您可以考虑结合实际项目,分享一些更具体的技术实现细节,这样可以让读者更加深入地理解和应用这些技术。期待您更多精彩的内容!

  • MyBatis

    CSDN-Ada助手: 恭喜博主在第四篇博客中选择了如此有趣的话题——MyBatis!你的持续创作让我感到非常高兴。通过分享关于MyBatis的知识和经验,你不仅能够帮助读者更好地理解这个框架,也能够促进更多人对该主题的探索。接下来,我想提个谦虚的建议:或许你可以在未来的博客中深入探讨MyBatis的一些高级用法或者与其他框架的整合,这样读者们可以进一步了解如何在实际项目中更好地利用MyBatis。再次祝贺你,期待你未来更多精彩的创作! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5

  • SpringMVC

    CSDN-Ada助手: 恭喜你写了关于SpringMVC的博客!持续创作是非常重要的,你的努力一定会得到回报。接下来,我建议你可以尝试深入研究SpringMVC的高级特性,或者结合实际案例进行分析,这样可以让读者更加深入地了解这个主题。希望你能在创作中不断进步,加油! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3

  • Spring AOP和事务

    CSDN-Ada助手: 非常棒的博客!你对Spring AOP和事务的解释非常清晰,让读者能够很好地理解这个概念。希望看到你继续写下去! 除了你在标题和摘要中提到的知识点外,还有一些扩展知识和技能可以与这篇博文相关。首先,你可以介绍一下Spring中的声明式事务管理,它能够让我们通过配置来管理事务,而不是在代码中编写事务管理逻辑。另外,你还可以讲解一下Spring AOP的其他应用场景,如日志记录、性能监控等。 当然,这些只是一些扩展知识和技能的建议,如果你感兴趣的话可以深入研究。期待看到你未来更多精彩的博文!加油! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2

  • Spring IOC(把对象交给容器来创建)

    CSDN-Ada助手: 恭喜你开始博客创作!标题为“Spring IOC(把对象交给容器来创建)”的博客听起来非常有意思。你选择的主题是一个非常重要的概念,对于理解和使用Spring框架来说至关重要。在这篇博客中,你提到了IOC(控制反转)的概念,并解释了如何将对象的创建交给Spring容器来管理。这是一个很好的开始,为读者提供了清晰的引导。 接下来,我建议你可以进一步扩展你的博客内容。你可以深入探讨Spring IOC的优势和适用场景,以及如何通过配置文件或注解来实现IOC。此外,你可以考虑添加一些示例代码和详细的步骤,以帮助读者更好地理解和实践。同时,你可以提供一些常见问题和解决方案,以帮助读者解决在使用Spring IOC过程中可能遇到的困惑。 总之,你的博客已经引起了我的兴趣,希望在接下来的文章中能够看到更多深入的内容和实用的建议。继续努力,祝你写作愉快! 推荐【每天值得看】:https://bbs.csdn.net/forums/csdnnews?typeId=21804&utm_source=csdn_ai_ada_blog_reply1

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • springboot和mybatisplus
  • MyBatis
  • SpringMVC
2023年5篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司保山企业网站制作多少钱果洛关键词按天计费报价咸阳关键词按天扣费公司通辽seo网站优化公司汕头seo优化多少钱乌海外贸网站制作价格永州网站制作报价梧州网站改版曲靖阿里店铺运营多少钱唐山百度标王徐州网络广告推广报价上海英文网站建设推荐丹东关键词排名包年推广报价宜春百度网站优化排名报价自贡网站建设价格沈阳阿里店铺运营公司达州英文网站建设哪家好渭南网络推广推荐南昌百姓网标王推广多少钱茂名阿里店铺托管推荐喀什推广网站公司东营百度网站优化哪家好泸州百度seo报价哈密网站制作价格坪地企业网站制作马鞍山企业网站改版价格泰安网站改版价格陇南建设网站江门网络推广价格新乡网站搜索优化推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化