aop

spring之AOP

拥有回忆 提交于 2020-01-11 10:09:23
AOP (Aspect Oritented Programming) 允许将代码插入到方法的调用过程中。 在不修改类代码的情况下,提供类似拦截器的功能。 AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面。 AOP是动态的抽象。对应用执行过程中的步骤进行抽象。能处理程序执行的特定点,而不是具体的程序。 AOP 中的基本概念 Aspect(切面):业务流程运行的某个特定步骤,也就是应用运行过程中的关注点,关注点可能横切多个对象,所以常常也称为横切关注点。 Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点,实际上Joinpoint还可以是field或类构造器)。 Advice(增强处理):AOP框架在特定的切入点执行的增强处理。处理有“around”、“before”、“after”等类型。 Pointcut(切入点):可以插入增强处理的连接点。即当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点。 Introduction(引入):在不修改类代码的前提下, 在运行期间动态地添加方法或字段到类中。 Target(目标对象):被AOP框架进行增强处理的对象,也被称为被增强的对象。 Weave(织入):将增强处理添加到目标对象中,并创建一个被增强的对象(AOP代理

Spring 3.0 / AOP / Aspectj:autoproxy intercept any call to getConnection()

a 夏天 提交于 2020-01-11 06:31:27
问题 I'm trying to intercept any call to getConnection() method to setup the dbms indentifier . I've implemented an aspect to get it but I don't get anything. Any idea? Thanks! import java.sql.CallableStatement; import java.sql.Connection; import javax.servlet.http.HttpSession; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org

Spring AOP事务处理

我的未来我决定 提交于 2020-01-11 03:38:38
4.1Spring 中事务简介 4.1.1事务定义 事务(Transaction)是一个业务,是一个不可分割的逻辑工作单元,基于事务可以更好的保证业务的正确性。 4.1.2事务特性 事务具备ACID特性,分别是: 原子性(Atomicity):一个事务中的多个操作要么都成功要么都失败。 一致性(Consistency):(例如存钱操作,存之前和存之后的总钱数应该是一致的。 隔离性(Isolation):事务与事务应该是相互隔离的。 持久性(Durability):事务一旦提交,数据要持久保存。 4.1.3案例分析 现有两个订单业务操作,在下单时需要执行更新库存。 当库存充足时,如图-11所示: 图-11 当库存不足时,如图12所示: 图-12 4.2Spring 中事务管理 4.2.1Spring 中事务方式概述 Spring提供了两种事务管理方式, 编程式事务和声明式事务。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。通过声明式事务管理可以更好使业务代码逻辑不受污染或少量污染, 因此在实际使用中声明式事务用的比较多。 Spring 声明式事务管理将开发者从繁复的事务管理代码中解脱出来,专注于业务逻辑的开发上,这是一件可以被拿来顶礼膜拜的事情。从具体配置实现上,Spring框架提供了两种配置方式:一种是基于xml方式做配置实现

spring-aop笔记

爷,独闯天下 提交于 2020-01-11 00:07:25
一、Aop是什么 1.aop:Aspect Ooriented Programming 的缩写,意味:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 2.主要功能是:日志记录,性能统计,安全控制,事务处理,异常处理 AOP相关术语 Aop相关术语: 1、连接点 -- joinPoint -- 指的是被拦截到的点; 2、切入点 – PointCut – 对joinPoint 连接点进行拦截的定义; 3、通知/增强 – Advice – 拦截到joinPoint 连接点之后所要做的事; 通知分为: 1、前置通知 2、后置通知 3、异常通知 4、最终通知 5、环绕通知(切面要完成的功能) 4、目标对象 – target – 代理的目标对象 – 对谁进行增强,谁就是目标; 5、织入 – weaving(织入) – 指的是把增强应用到目标对象来创建新的代理对象的过程; 6、Proxy – 代理 – 一个类被aop织入增强后就会产生一个结果代理类; 7、Aspect – 切面 – 是切入点和通知进行结合; Advice:通知/增强 1、aop联盟 2、Spring aop 按照通知advice在目标方法的连接点位置可以分为5类; (1)前置增强 (2)后置增强 (3)环绕增强 (4)异常抛出通知 (5)引介通知 Spring aop切面类型 Advisor

Spring3.2 AOP 分析

≡放荡痞女 提交于 2020-01-10 15:26:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Spring3.2 AOP个人分析: AOP, 即Aspect-Oriented-Programming, 面向切面编程, 又一Spring的核心,被广泛应用,如在Spring-tx中都有用到,其好处是实现松耦合的外围处理程序,先说些理论吧。 切面(Aspect): 一种模块化机制,用来描述分散在对象,类或函数中的横切关注点,它主要用于处理一些特定功能,而并不是业务逻辑,比如,日志处理,事务处理等,既然不是业务逻辑,就应该和业务逻辑代码分开,因此比较好的解决办法就是使用切面来编程,对业务代码破坏小,而且易于单独维护。 通知(Advice): 定义在目标点干什么,比如在方法调用前,方法调用后等,Spring对 AOP Alliance定义的Advice接口作了自己的扩展,如图: 例如其中BeforeAdvice的扩展接口MethodBeforeAdvice, 及该通知会在目标对象的目标方法调用之前被调用: public interface MethodBeforeAdvice extends BeforeAdvice { void before(Method method, Object[] args, Object target) throws Throwable; }

AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)

独自空忆成欢 提交于 2020-01-10 15:03:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下让你不知所措,心想着:管不得很多人都和我说AOP多难多难。当我看进去以后,我才行发现:他就是一些Java基础上的朴实无华的应用,包括IOC(见 《Spring IOC(依赖注入、控制反转)概念理解》 ),包括许许多多这样的名词,都是万变不离其宗而已。 2、为什么要用AOP 1)就是为了方便,看一个国外很有名的大师说,编程的人都是“懒人”,因为他把自己做的事情都让程序去做了。用了AOP能让你少写很多代码,这点就够充分了吧。 2)就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情。这些其他的事情包括:安全,事物,日志等等。 3、那些AOP术语 初看这么多术语,一下子都不好接受,慢慢来,很快就会搞懂。 通知、增强处理(Advice) 就是你想要的功能,也就是上说的安全、事物、日子等。你给先定义好,然后再想用的地方用一下。包含Aspect的一段处理代码 连接点(JoinPoint) 这个就更好解释了,就是spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的钱、后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点

spring学习4:aop的学习

流过昼夜 提交于 2020-01-10 08:26:46
目录 spring学习4:aop的学习 一、aop概述 二、aop的相关术语 2.1 Joinpoint(连接点) 2.2 Pointcut(切入点) 2.3 Advice(通知) 2.4 Aspect(切面) 三、基于xml配置的aop的使用步骤 3.1 抽取公共的代码制作成通知类 3.2 把通知类配置到spring容器中 3.3 使用aop:config 来声明aop的配置 3.4 使用aop:aspect来声明切面的配置 3.5 在切面内部使用 aop:pointcut来声明切入点 3.6 在切面的内部配置通知类型 四、环绕通知详解 五、总结 spring学习4:aop的学习 一、aop概述 aop即面向切面编程,简单说就是把程序中重复的代码抽取出来,在需要执行时,使用 动态代理 的技术在不改变源码的基础上动态的增强原有的功能。 作用和优势: 在程序运行期间,不修改源码对已有方法进行增强 二、aop的相关术语 2.1 Joinpoint(连接点) 在aop中点指的就是方法,Joinpoint就是指业务层的各个方法 2.2 Pointcut(切入点) 指的是要对那些业务层方法进行拦截 2.3 Advice(通知) 所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。 通知的类型: 前置通知,后置通知,异常通知,最终通知,环绕通知 2.4 Aspect(切面)

Spring学习总结——Spring概念详解

蹲街弑〆低调 提交于 2020-01-10 07:37:37
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。你可能正在想“Spring不过是另外一个的framework”。当已经有许多开放源代码(和专有)J2EEframework时,我们为什么还需要Spring Framework?Spring是独特的,因为若干个原因:它定位的领域是许多其他流行的framework没有的。Spring致力于提供一种方法管理你的业务对象。Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。 背景 Rod Johnson在2002年编著的《Expert one on one J2EE design and

[Spring框架]Spring AOP基础入门总结一.

﹥>﹥吖頭↗ 提交于 2020-01-10 07:30:35
[Spring框架]Spring AOP基础入门总结一. 前言: 前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过 预编译 方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容,是 函数式编程 的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的 耦合度 降低,提高程序的可重用性,同时提高了开发的效率。 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码. Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码. 二,AOP开发中的专业术语 Joinpoint(连接点) :所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点. Pointcut(切入点): 所谓切入点是指我们要对哪些Joinpoint进行拦截的定义. Advice(通知/增强) :所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知

Origin of some of AOP's terminology

。_饼干妹妹 提交于 2020-01-10 05:33:05
问题 I would think this question have been asked before, but I was not immediately able to find related SO questions, or articles elsewhere for that matter. It strikes me that certain terms in AOP are rather strange. It seems I'm not the only one - this article, for instance, notes that "unfortunately, AOP terminology is not particularly intuitive". However, I have not found a resource explaining why they are not more "intuitive", if that's possible. More specifically: I can somewhat understand