spring中基于AOP的基本配置

2023-11-16

Aop的概念

在不修改原有代码的情况下 增强跟主要业务没有关系的公共功能代码到 之
前写好的方法中的指定位置 这种编程的方式叫AOP。
注意:AOP的底层用的代理,代理是一种设计模式
代理分为静态代理和动态代理

静态代理

在这里插入图片描述
在这里插入图片描述
静态代理需要自己建立一个代理类
在这里插入图片描述
测试类
注意:
静态代理的弊端:需要为每一个被代理的类创建一个“代理类”,虽然这种方式可以实现,但是成本太高。

动态代理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
动态代理公共的静态代码块
在这里插入图片描述
注意:动态代理(AOP的底层是用的动态)
jdk动态代理 :必须保证被代理的类实现了接口,
cglib动态代理 :不需要接口

AOP的核心概念及术语

切面(Aspect): 指关注点模块化,这个关注点可能会横切多个对象。
事务管理是企业级Java应用中有关横切关注点的例子。 在Spring AOP
中,切面可以使用通用类基于模式的方式(schema­based approach)或
者在普通类中以@Aspect注解(@AspectJ 注解方式)来实现。
连接点(Join point): 在程序执行过程中某个特定的点,例如某个方
法调用的时间点或者处理异常的时间点。在Spring AOP中,一个连接点总
是代表一个方法的执行。
通知(Advice): 在切面的某个特定的连接点上执行的动作。通知有多
种类型,包括“around”, “before” and “after”等等。通知的类型将在后面的
章节进行讨论。 许多AOP框架,包括Spring在内,都是以拦截器做通知模
型的,并维护着一个以连接点为中心的拦截器链。
切点(Pointcut): 匹配连接点的断言。通知和切点表达式相关联,并
在满足这个切点的连接点上运行(例如,当执行某个特定名称的方法
时)。切点表达式如何和连接点匹配是AOP的核心:Spring默认使用
AspectJ切点语义。
引入(Introduction): 声明额外的方法或者某个类型的字段。Spring
允许引入新的接口(以及一个对应的实现)到任何被通知的对象上。例
如,可以使用引入来使bean实现 IsModified接口, 以便简化缓存机制(在
AspectJ社区,引入也被称为内部类型声明(inter))。
目标对象(Target object): 被一个或者多个切面所通知的对象。也被
称作被通知(advised)对象。既然Spring AOP是通过运行时代理实现
的,那么这个对象永远是一个被代理(proxied)的对象。
AOP代理(AOP proxy):AOP框架创建的对象,用来实现切面契约
(aspect contract)(包括通知方法执行等功能)。在Spring中,AOP代
理可以是JDK动态代理或CGLIB代理。
织入(Weaving): 把切面连接到其它的应用程序类型或者对象上,并
创建一个被被通知的对象的过程。这个过程可以在编译时(例如使用
AspectJ编译器)、类加载时或运行时中完成。 Spring和其他纯Java AOP
框架一样,是在运行时完成织入的。

AOP的通知类型

前置通知,后置返回通知,后置异常通知,后置通知,环绕通知

Spring AOP的简单配置

在ioc的基础上添加pom依赖
AOP的基本依赖配置
编写配置
要加入扫描包和开启注解AOP功能
在这里插入图片描述
设置程序中的切面类
在类中加入@Aspect注解,并加入Compoent注解将其注入到Spring容器中
在这里插入图片描述

Aop的基本实现方式

在这里插入图片描述
在这里插入图片描述
测试类

什么是AOP?

在不修改原有代码的情况下 增强跟主要业务没有关系的公共功能代码到 之
前写好的方法中的指定位置 这种编程的方式叫AOP。

JDK动态代理和CGLIB动态代理的区别

JDK动态代理需要实现接口,而CGLIB动态代理不需要实现接口

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring中基于AOP的基本配置 的相关文章

  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • Java:使用 HttpURLConnection 的 HTTP PUT

    如何执行 HTTP PUT 我正在使用的类似乎认为它正在执行 PUT 但端点将其视为我执行了 GET 我做错了什么吗 URL url new URL https HttpURLConnection conn HttpURLConnectio
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • 在 ContainerRequestFilter 中填充 spring request 作用域 bean

    我使用 jersey 1 13 和 spring 3 1 1 编写了一个在 tomcat 6 上运行的休息服务 在 tomcat 中 我使用一个领域来进行身份验证 在我的应用程序中 我需要当前用户 但我不想从每个资源中的球衣访问Securi
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 列表应该如何转换为具体的实现?

    假设我正在使用一个我不知道源代码的库 它有一个返回列表的方法 如下所示 public List
  • 如何将使用消息侦听器接收到的 JMS 消息转换为域对象

    我在用 春季3 1 1 ActiveMQ 5 6 0 我有两个 JMS 应用程序 应用程序 A 使用 JmsTemplate 使用 jmsTemplate convertAndSend msg 发送域对象 App B 使用消息监听器并注册了
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 嵌入式 Jetty - 以编程方式添加基于表单的身份验证

    有没有一种方法可以按如下方式以编程方式添加基于表单的身份验证 我用的是我自己的LdapLoginModule 最初我使用基本身份验证并且工作正常 但现在我想在登录页面上进行更多控制 例如显示徽标等 有没有好的样品 我正在使用嵌入式 jett
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • Open3D 计算点云包围盒

    目录 一 主要函数 1 AABB包围盒 1 1获取包围盒边长 2 OBB包围盒 2 1获取包围盒边长 二 代码实现 三 结果展示 一 主要函数 1 AABB包围盒 1 get axis aligned bounding box 获取aabb
  • 【AD20学习笔记】原理图库基础概念篇

    2022 7 6 暑假里还是跟着凡亿教育的课程再学习一遍吧 虽然这个课程已经看了很多遍了 但老是记不住 实战的时候需要在调视频看 很难受 这次再系统完整地跟一遍基础和实战 在这里记录一下 我这里一般是看完一堂课就开画了 不是很系统详细写 仅
  • clickhouse数据导入遇到的问题

    1 采用mybatis写入数据 速度很慢的问题 采用mybatis拼接sql的方式 可以写入数据 但是效率很低 每秒数据大概200 300条数据记录 2 采用jdbc写入数据 可以使用两种数据源 新版本的包 import com click
  • 如何画出一张合格的技术架构图?

    阿里妹导读 技术传播的价值 不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径 加速业务的上线速率 也体现在优秀工程师在工作效率提升 产品性能优化和用户体验改善等经验方面的分享 以提高我们的专业能力 接下来 阿里巴巴技术专家三画
  • 使用Vue过滤器格式化日期时间

    学习目标 掌握Vue过滤器 created mounted beforeDestory 等函数 学习内容 Vue过滤器 created mounted beforeDestory 实现思路 1 使用Vs code创建demo html文件
  • php下载xlsx到本地,Laravel 5.8 实现Excel 下载(将信息数据导出成Excel下载到本地)...

    目的 实现将数据表信息导出成Excel下载到本地 注 我这里用Laravel 版本 5 8 框架中实现并讲解 在laravel使用第3方插件库来完成此项工作 下面我为大家提供3个链接 供大家参考 1 Excel插件库 2 Excel官网 3
  • Mina框架及接口开发

    Mina是NIO实现的一个架构 可以通过它快速开发网络通信 中间件等服务端程序 IOService接口 描述服务端和客户端接口 子类是connector和Acceptor分别用于描述客户端和服务端 IOproceser 多线程环境来处理我们
  • 【Vue2从入门到精通】Vue监听器watch,计算属性computed,方法methods的区别及使用场景

    文章目录 人工智能福利文章 前言 Vue 监听器 watch 定义及作用 示例 使用场景 Vue 计算属性 computed 定义及作用 示例 使用场景 Vue 方法 methods 定义及作用 示例 使用场景 总结 脑筋急转弯小程序抢先体
  • echarts 根据实际数据改变仪表盘颜色

    情景 实际值 gt 计划值 仪表盘颜色显示 绿色表示超过预期 相反则表示未达到预期 如图 js 控制 方法 if factVal gt planVal curOption series 1 axisLine lineStyle color
  • React中实现tab切换

    代码比较简单 并不复杂 import React Component from react class Taball extends Component constructor props super props this state cu
  • 【ML特征工程】第 3 章 :文本数据:扁平化、过滤和分块

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • MATLAB算法实战应用案例精讲-【数模应用】KMP字符串匹配(附C语言和Java代码)

    目录 前言 几个高频面试题目 KMP 算法和暴力匹配算法之间的区别 和动态规划有什么关系
  • eolinker搭建(Linux版)

    1 什么是eolinker Eolinker是一个api管理平台 可满足各行业客户在不同应用环境中对接口管理全生命周期的个性化需求 提供API开发管理 开发团队协作 自动化测试 网关以及监控等服务 帮助企业实现开发运维一体化 提升开发速度并
  • 极速版RPS选股,一秒出结果的方案是如何实现的!股票量化分析工具QTYX-V2.5.3...

    概述RPS选股策略 在国内大家可能对彼得 林奇 Peter Lynch 沃伦 巴菲特 Warren E Buffett 这些华尔街 wall street 的金融大鳄耳熟能详 其实威廉 欧奈尔 William J O Neil 的投资成就同
  • 自行装机配置

    2022年CPU天梯图 更新13代酷睿 锐龙7000 知乎 2022年显卡天梯图 更新4090 A770 A750 知乎 显卡 华硕显卡分级 华硕显卡系列 定位 价格 DUAL雪豹 丐版 便宜实惠 ATS巨齿鲨 中端 比DUAL系列贵 TU
  • 51 Proteus仿真频率计速度计超速报警数码管显示MAX7219-0001

    Proteus仿真小实验 51 Proteus仿真频率计速度计超速报警数码管显示MAX7219 0001 功能 硬件组成 51单片机 8位数码管 MAX7219数码管驱动模块 多个按键 LED灯 蜂鸣器 1 准确测量信号发生器输出的方波频率
  • Qt对象树

    01 什么是对象树 是用来组织和管理所有 QObject及其子类创建的对象 父对象 this 或 setParent 02 对象树的基本规则 对象树创建规则 对于Qt程序来说 父对象通常创建在栈上 子对象应创建在堆中 new 无需手动 de
  • ReentrantReadWriteLock原理分析

    在介绍ReentrantReadWriteLock读写锁原理之前 先来说下写锁与读锁 方便后续大家的理解 1 当资源被写锁占用时 此时是不允许去读的 只有当写锁被释后读锁才能去申请资源 2 当资源没有被写锁占用时 多个线程是可以共享资源 写
  • PyPI使用国内源

    PyPI使用国内源 https www cnblogs com sunnydou p 5801760 html 通过几次 的使用 对于默认的pip源的速度实在无法忍受 于是便搜集了一些国内的pip源 如下 阿里云 http mirrors
  • spring中基于AOP的基本配置

    Aop的概念 在不修改原有代码的情况下 增强跟主要业务没有关系的公共功能代码到 之 前写好的方法中的指定位置 这种编程的方式叫AOP 注意 AOP的底层用的代理 代理是一种设计模式 代理分为静态代理和动态代理 静态代理 静态代理需要自己建立