Spring3 AOP接口拦截怎么实现?用POJO和动态代理的轻量级方法

网安智编 厦门萤点网络科技 2025-12-11 00:10 58 0
1、对AOP的具体实现1、中的AOP(1 ) AOP是对AOP的一种轻量级的实现 AOP是通过IoC模式来实现的AOP,并且是通过动 态代理来实现的。业务功能类为POJO并且可以在容器之外执 行(2) 中为什么要提供对AOP的具体实现基于...

1、对AOP的具体实现1、中的AOP(1 ) AOP是对AOP的一种轻量级的实现 AOP是通过IoC模式来实现的AOP,并且是通过动 态代理来实现的。业务功能类为POJO并且可以在容器之外执 行(2) 中为什么要提供对AOP的具体实现基于传统的J2EE的应用系统通常严重依赖于通过容器 的JNDI才可获得容器所提供的服务这意味着我们 需要大量直接的JNDI查找、或者要使用 模式。 AOP简化了 “容器提供基础功能月艮务”的具体实现-一同样能够提供JDBC、JMS和JTA之类的常见服 务的支持,但只需

2、要在XML文件中进行简单的配置实 现利用IoC可以实现由容器利用AoP可以实现由容控制对象的生命期管理器提供基础功能服务这些是的特点一 AOP作为一种非侵略性的、轻型的AOP框架-这也就是 AOP与其它类型的AOP的最大的不同,占、 AOP的功能通常是和 IoC容器联合使用 的。并且(通知)和(连接点)本身都由3.重点理解 AOP中的三个概念(1 ) &(连接点或它定义了需要注入“(通知)”通常是某个特定的类中的一个或者多个pu

3、blic方法名称。(2 ) (通知见文档中的示例说明_一二它就是我们想要向别的程序内部的不同的地方注入的程序 代码从而实现我们的附加功能。(3 ) (通知者或者通知的装配器)它其实是和的装配器,是将的代码 注入2、 AOP和 IOC两者的关系(1) IoC容器并不需要依赖于AOP这意味着如果我们不需要使用AOP,当然AOP也就不需 要被使用。但 AOP完善了 IoC,从而使框架 成为一个有效的中间件的解决方案。_(2 ) AOP通过IoC模式

4、来实现 IoC容器来管理并动态地注入。的代码位査请见文档中的示例说明到系统主程序中预定义位置的代码它一般包含一个通 知对象和与之关联的切入点表达式。4、 AOP是基于动态代理机制实现的(1 ) 默认使用的是基于Java Proxy模式实 现-但它只能够实现接口的代理如果目标对象实现了一个或多个接口暴露的方法,将使用JDK的java. lang, . Proxy类创建代理- 这样任何的接口或一堆接口都能被代理。(2)动态代理实现的优点动态代理模式的核心就在于具体的代理类代码中不出现与 具体的被代理的目标相关联的接口

5、或者目标实现类的引用,因 此代理类可以适用于多个不同接口的代理实现。(3)应用动态代理时对应用的要求要求其所代理的目标对象一定要实现某个接口面向 接口编程而不是面向类编程_ _(4 )动态代理实现的示例 =二二為见文档中前 J、) 例说明一5、 AOP通过基于CGLIB实现对类进行AOP代理(1)在proxy的配置中增加:true(2 )同时保证cglib-full-2. 0. 2. jar在注意:对接口创建代理优于对类创建代理,因为这样会产生更加 松耦合的系统标记为final的方法是不能被通知的,因为在实 现的时候是为目标类产生子类。6.使用Spr

6、ing AOP的一般开发过程(1 )创建通知类 实现某个接口(2)在中定义切入点(在*xml中定义出)因此不仅 可以对接口进 行代理,也能 够实现对类进7代理一(3 )在的1*xml文件中添加代理对象和的定 义(由莱提供)7、中AOP的实现示例实现通知处教学讲义 0 匚ring框架技村而言方页编程(AOP) Spr g中A0啲实现示例8、在 AOP的实现中我们需要创建(通知)(1 ) AOP中的(通知)何时被调用 AOP的通知可以在方法调用的不同点注

7、入进我们的 应用系统中因为的连接点是用方法拦截器实现 的,这就意味着我们编写的 AOP通知将在方法调用 的不同点时将进入到程序中。由于在调用一个方法时有几个不同的时间点“前”.“后”以及“前和后” ,可以在不同的时间点将Adv ice通知注入it我们的主程序中(2) AOP中提供了四种通知的接口Me t o reAdv ice用于在目标方法调用 前触发Af -用于在目标方法调用后触发用于在目标方法抛出异常时触发 -用 于实现通

8、知(),在目标方法执行的前后触发_J面向方页编程(A霁) AOP技术3 C 臼中AOP的实现弼E C和 中的AOP技术- 巒实现 (1) 中AOP的实现町实现时恥和*通知血 示例一.團实现通知(3) .doc凹实现Throw通知(4) dx实現適知(1 ) .doc7、中AOP的实现示例实现通知注意:目前只支持方法拦截,也就是说,只能在方法的 前后进行拦截,而不能在属性前后进行拦

9、截。3roxy bean for . This is a to a AOP匚巧二a:with a 、介绍(1 )实现对象代理和其他的实现 一样,引入一个间農岛层次。它实现对象的代理功能如果我们定义一个名字为的

10、,引用的对象所看到的不是实例未身,而是由英班的类的 0方法所创建的对象。(2 )作用它简化和封装了动态代理技术这个方法将创建一个包装了目标对象的A0P代理。使用类来创建A0P代理的最重要的优点之 一是IoC寸以管理通知和切入点。(3 )可以采用实现特定功能的满足特 殊的功能要亲通常,我们不需要的全部通用的功能, 因为我们常常只对一个方面感兴趣:例如,事务管理。当我们仅仅对一个特定的“方面”

Spring AOP实现原理_spring3 aop 接口拦截_Spring AOP动态代理机制

11、感兴趣时,我们可以使 用许多便利的工厂来创建A0P代理,如: class Abstr讥yBEan(4 ) 的典型配置标签=*鬆点际斑收滋九紳如壊.靱辟闕用 “com model : a * *.s 1 ogAf*-t er Advd.SOT 2 代理的目 erf aces:代理天应

12、该实现的接口表二 terc,总二 m 匙 讪畑 c 讓畑 Bw 封 1 一允讦宦属性.这桶總含 所梆 S 要在 B 於或?舉弍上执行的 (需更破用到目标对象上的通知 Bean 的名字,可以呈 拦住器 和其 Ifii 匆趣的名字).,(5 )在客户端获得的代理对象 二 *氐丄(鬼込救肚呱碎丄);亠 t亡:rfce one -( ) cont ex t e

13、、在中提供了两种形式的切入点(1 )静态切入点我们所应该注意的是静态切入点是基于方法和目标类进行 切入点判断而不考虑方法的参数。同时静态切入点是高效的因为只在第一次调 用方法时主要的属性介绍 请见下面的 说明a执行静态切入点:以后每次调用这个方法时就不 需要再执行。(2 )动态切入由于使用动态切入点有很大的性能损耗,因此我们很少有 机会创建动态切入点。因为需要同时计算方法参数 和静态信息。这意味着它们必须在每次方法调用时都被执行;由于参数 的不同,评估结果不能被缓存。10、中的静态切入点、(1 )

14、类因为静态切入点的性能要优于动态切入点,所以优先考虑 使用。为我们提供创建静态切入点很实用的类,借;助于该类我们只需要关心和s巳方法(2 )创建静态切入点的实用类我们可以使用具体的类名或者方法,也可以使用通配符* 它也支持通过正则表达式来创建静态切入点Gean豳或匹融取亦匹class=org . aop. .* *Gef * “

15、nan皆* - . iodel. . 心 *: 请见“实现(及安全1K自动代理及实现类辔V”和息着知(1 ) 的应用场合在应用较小时,只有艮少类需要被应用“通知”时,可以很好的工作。但当有许多类需要通知的时,此时再显示地创建每个类的 代理类就显得很繁琐。在中为了简化这些方面的应用开发,为我们提供 了自动通过容器来创建代理(2)实现的方法利用

16、类利用 类(3 )利用ator类实现ator为匹酉己名 字的Bean产生代理-它可以使用在将一个或者多个方面应用在命名相似的Bean中为属性提供各种或任何其它通知 类型。(4 )采用ator实现的配置示例 apr odfil UAImp 1 * /: e

17、 ees - ux e LogAf 3 4/bean a也可以为多个组件,各自以5m*注意:其和两个属性的含义。12、利用 ator类实现 自动代 理(1)它提供了更强大的自动代理功能的实现 能够自动应用当前上下文中适当的,无需在自动代 理的bean定义中包括bean的名字。这比起ator自动代理组件来说,它 提供了对于需要同样的“”时而在不同组件中避

18、免 重复性地配置。(2 )釆用自动将应用到符合的目标对象上的示例bcm . . aop. 2I*马鼻空$5153 cla=*ox 二:闕舷輙嘶;/ ty aco7n pxl98? model ace “13、实现/After 的示例(1 )“方法跟踪”主要是指在一个目标应用程序内捕获对所跟踪的方法的调 用以及方

19、法的返回值,并以某种方式显示这种跟踪信息。在A0P中,“通知”和after通知”类型常用于捕 获这些类型的联结点,因为这两种通知可以在方法调用联结 点之前或之后触发. . Def ault& (2)在中实现 或是After 实现接口Af ter 实现OTg. 口(3)示例本讲的简要回顾1、 子曰:“学而不思则罔,思而不学则殆。”“学而时习之”2、 子曰:“知之者不如好之者,好之者不如乐之者”3、 子曰:“三人行,必有我师焉力4、子曰:“我非生而知之者,好古,敏以求之者也力