aop有几种通知类型(spring aop静态和动态的区别)

2024-07-23 15:26:43 9

aop有几种通知类型(spring aop静态和动态的区别)

本文目录

spring aop静态和动态的区别

原理AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。  AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。  AOP正在成为软件开发的下一个光环。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。  Spring framework是很有前途的AOP技术。作为一种非侵略性的、轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是像往常一样编程。AOP概念  让我们从定义一些重要的AOP概念开始。  — 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。  — 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。  — 通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。  — 切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。  — 引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。  — 目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。  — AOP代理(AOP Proxy):AOP框架创建的对象,包含通知。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。  — 编织(Weaving):组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

spring框架aop中的advice封装了目标对象的横切逻辑,它有几种类型

AOP面向方面编程advice指定Aspect的作用时机,spring提供了以下的通知类型,对应不同的作用时机:1前置通知:《aop:before》先执行方面逻辑,再执行目标方法;2后置通知:《aop:after-returning》先执行目标方法,如果不出现异常,再执行方面逻辑;3异常通知:《aop:after-throwing》先执行目标方法,如果出现异常,再执行方面逻辑;4最终通知:《aop:after》先执行目标方法,有无异常都再执行方面逻辑;(类似于finally的作用)5环绕通知:前置+后置,先执行方面的前一部分,再执行目标方法,最后执行方面的剩余部分。纯手打,哦

spring aop 环绕通知around和其他通知的区别

spring 的环绕通知和前置通知,后置通知有着很大的区别,主要有两个重要的区别:1) 目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,而前置和后置通知 是不能决定的,他们只是在方法的调用前后执行通知而已,即目标方法肯定是要执行的。2) 环绕通知可以控制返回对象,即你可以返回一个与目标对象完全不同的返回值,虽然这很危险,但是你却可以办到。而后置方法是无法办到的,因为他是在目标方法返回值后调用 这里是经过我自己测试的过的例子,使用面向切面来处理一些问公共的问题,比如,权限管理,事务的委托下面的例子就是使用环绕通知,当程序发生异常时,重复提交请求,重复的次数是可以设定的 当我们开发企业级应用时,通常会想要从几个切面来引用模块化的应用和特定操作的集合,下面是一个典型的通用切面,看起来可能像下面这样(这也是Spring文档里的)

aop原理是什么

aop原理:

AOP将业务逻辑组件和切面类都加入到容器中,负责在业务逻辑运行的时候将日志进行打印,切面类负责动态感知MathCalculator.div运行到哪里然后执行。通过@Aspect通知注解给切面类的目标方法标注何时何地运行。

在程序创建之前会根据切入点表达式对增强器进行一一匹配,最终拿到所有的增强器。创建代理对象过程中,会先创建一个代理工厂,获取到所有的增强器(通知方法),将这些增强器和目标类注入代理工厂,再用代理工厂创建对象。

AOP的组成:

1、方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。

2、连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

3、通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。

aop有几种通知类型(spring aop静态和动态的区别)

本文编辑:admin

更多文章:


deal可数还是不可数(deal是什么意思)

deal可数还是不可数(deal是什么意思)

这篇文章给大家聊聊关于deal可数还是不可数,以及deal是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录deal是什么意思a good deal 做名词 时 是可数名词复数还是不可数名词成交口语中可以直接用Deal

2024年10月21日 15:25

springboot教程(SpringBoot究竟是如何跑起来的)

springboot教程(SpringBoot究竟是如何跑起来的)

本文目录SpringBoot究竟是如何跑起来的SpringBoot是如何动起来的如何创建Spring Boot应用需要注意什么SpringBoot究竟是如何跑起来的如果我们使用的是SpringApplication的静态run方法,那么,这

2024年7月7日 03:41

vbscript使用教学(VBscript中注释有哪些方式)

vbscript使用教学(VBscript中注释有哪些方式)

本文目录VBscript中注释有哪些方式vbscript的过程调用方式使用VBScript如何实现在指定文件夹下,如何实现对其子文件下的文件也进行修改操作JavaScript 函数如何调用 VBScript 函数vbscript怎样指定显示

2024年7月10日 19:44

web前端设计网页案例(Web前端设计排版技巧有哪些)

web前端设计网页案例(Web前端设计排版技巧有哪些)

本文目录Web前端设计排版技巧有哪些网页插画的运用-几种类型的插画风格网页设计赏析基于Web标准的网页设计与制作的前 言网页原型图模板怎么做-如何设计出色的网站后台原型前端开发设计学习Web开发设计型Web前端做什么都要学习什么Web前端设

2024年6月25日 11:50

anaconda装好如何打开python(安装Anaconda3 后,怎样使用 Python 2.7)

anaconda装好如何打开python(安装Anaconda3 后,怎样使用 Python 2.7)

本文目录安装Anaconda3 后,怎样使用 Python 2.7anaconda 怎么启动pythonwindows下anaconda怎么运行python文件安装Anaconda3 后,怎样使用 Python 2.7可以直接输入命令pyt

2024年7月20日 00:18

js和php怎么进行数据交互(如何把JS获取的数据传递给php)

js和php怎么进行数据交互(如何把JS获取的数据传递给php)

其实js和php怎么进行数据交互的问题并不复杂,但是又很多的朋友都不太了解如何把JS获取的数据传递给php,因此呢,今天小编就来为大家分享js和php怎么进行数据交互的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目

2024年9月2日 04:45

嵌入式开发培训大纲(软考-嵌入式系统设计师-准备哪些书)

嵌入式开发培训大纲(软考-嵌入式系统设计师-准备哪些书)

本文目录软考-嵌入式系统设计师-准备哪些书湖北自考11647嵌入式系统程序设计(高级)课程考试大纲江苏自考29945嵌入式软件技术概论考试大纲(高纲1871)软考-嵌入式系统设计师-准备哪些书《嵌入式系统设计师教程》,清华大学出版社。本书按

2024年7月17日 05:57

distinctiveness is an essential(essential怎么读)

distinctiveness is an essential(essential怎么读)

大家好,如果您还对distinctiveness is an essential不太了解,没有关系,今天就由本站为大家分享distinctiveness is an essential的知识,包括essential怎么读的问题都会给大家分析

2024年8月3日 21:35

selected什么意思中文(这里的selected是什么意思)

selected什么意思中文(这里的selected是什么意思)

本文目录这里的selected是什么意思selected什么意思这里的selected是什么意思we will decide the trip period for winners from the selected periods.tri

2024年7月13日 06:52

铃铛边框素材图片(饥荒铃铛怎么做)

铃铛边框素材图片(饥荒铃铛怎么做)

大家好,如果您还对铃铛边框素材图片不太了解,没有关系,今天就由本站为大家分享铃铛边框素材图片的知识,包括饥荒铃铛怎么做的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录饥荒铃铛怎么做PS制作精致圣诞小铃铛怎么用PS制

2024年7月27日 22:25

serverless 框架(不会别答,不然差评,如何配置serverless前端node项目)

serverless 框架(不会别答,不然差评,如何配置serverless前端node项目)

本文目录不会别答,不然差评,如何配置serverless前端node项目什么是Serverless架构不会别答,不然差评,如何配置serverless前端node项目摘要你好,很高兴为你解答。是这个吗。基于 NodeJS 的 serverl

2024年7月2日 05:10

founder是什么意思(founder effect是什么意思)

founder是什么意思(founder effect是什么意思)

本文目录founder effect是什么意思founder是什么意思啊如何背found的名词有哪些founder effect是什么意思创立者效应(英语:founder effect,亦称为建立者效应或创始者效应、始祖效应)是遗传漂变的一

2024年5月11日 17:51

sql count 统计每种个数(sql 统计每个类型有多少数量,类型包含 某字符为同)

sql count 统计每种个数(sql 统计每个类型有多少数量,类型包含 某字符为同)

本文目录sql 统计每个类型有多少数量,类型包含 某字符为同sql中如何统计一字段中字符串的个数如图,sql语句怎么统计某个表中的不同类别不同名称的数量谢谢SQL 数据库中如何统计指定数据的个数 高分急寻SQL计算表中一个列中各数的出现次数

2024年7月22日 11:13

apache solr(为什么solr6.0以后的版本,无法引入org.apache.solr.client.solrj.impl.HttpSolrClient类)

apache solr(为什么solr6.0以后的版本,无法引入org.apache.solr.client.solrj.impl.HttpSolrClient类)

本文目录为什么solr6.0以后的版本,无法引入org.apache.solr.client.solrj.impl.HttpSolrClient类求助:solr如何通过指定条件修改数据apache solr多值字段高亮不高亮,蛋疼在solr

2024年7月17日 16:33

免费网站谁有靠谱的2021(什么网站相亲最靠谱有免费,相亲网站哪个比较靠谱)

免费网站谁有靠谱的2021(什么网站相亲最靠谱有免费,相亲网站哪个比较靠谱)

本文目录什么网站相亲最靠谱有免费,相亲网站哪个比较靠谱哪有免费的好网站吗谁有免费电影网站!或收费的比较好的站点.有没有免费靠谱的相亲网站谁有好的免费下电影的网站啊真正免费的电影网站,我找过拉,最后还不能看的,谁有正规的免费看电影的网站,请告

2024年5月9日 08:11

直播软件开发app(开发一款视频直播App软件需要多少钱)

直播软件开发app(开发一款视频直播App软件需要多少钱)

本文目录开发一款视频直播App软件需要多少钱直播类视频App软件怎么开发直播软件怎么开发的(直播app怎么开发)开发直播app软件有哪些实施方法请问一下开发一款直播APP软件需要多少费用开发一款直播类APP要多少钱、功能开发一款视频直播Ap

2024年2月6日 04:00

integer数组(什么是Integer型数组)

integer数组(什么是Integer型数组)

大家好,今天小编来为大家解答以下的问题,关于integer数组,什么是Integer型数组这个很多人还不知道,现在让我们一起来看看吧!本文目录什么是Integer型数组如何用Integer定义一个随机数组在java中怎样将一个integer

2024年6月30日 13:45

css中设置表格所有行的样式(如何在CSS表格样式)

css中设置表格所有行的样式(如何在CSS表格样式)

大家好,如果您还对css中设置表格所有行的样式不太了解,没有关系,今天就由本站为大家分享css中设置表格所有行的样式的知识,包括如何在CSS表格样式的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录如何在CSS表格样

2024年8月26日 20:35

建立网站的几个步骤(如何建设网站步骤有哪些)

建立网站的几个步骤(如何建设网站步骤有哪些)

本篇文章给大家谈谈建立网站的几个步骤,以及如何建设网站步骤有哪些对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录如何建设网站步骤有哪些我要建

2024年9月2日 15:50

消磨时间英文(消磨时间的英文怎么写)

消磨时间英文(消磨时间的英文怎么写)

本文目录消磨时间的英文怎么写打发时间用英语应当怎样说呢人们想尽各种各样的办法去消磨时间,但时间把人消磨了,翻译成英语没有买卖就没有杀害 英语怎么说不要浪费时间用英语怎么说求高人解答英语问题英文问题求解消磨时间用英文怎么翻译英语的 ,解释下就

2024年5月13日 01:47

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1736
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索