ImageVerifierCode 换一换
格式:TXT , 页数:5 ,大小:7.73KB ,
资源ID:46604      下载积分:5 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-46604.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Spring AOP面向方面编程原理.txt)为本站会员(凯文文)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

Spring AOP面向方面编程原理.txt

1、6.3 Spring AOP面向方面编程原理:AOP概念(1)介绍完IoC之后,我们来介绍另外一个重要的概念:AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(

2、Logging)和调试管理(Debugging)等。AOP正在成为软件开发的下一个光环。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。Spring framework是很有前途的AOP技术。作为一种非侵略性的、轻型的AOP framework,你无 使用编 的 , 可以在Java程序中使用 。这 开发 一 要对 AOP framework, 是 常一 编程。6.3.1 AOP概念我们 一些重要的AOP概念开 。方面(Aspect):一个 注 的化,这个 注 可另外横个对currency1。事务管理是J2EE应用中

3、一个很的横 注 例“。方面用Spring的Advisor 。fi (Joinpoint):程序fl 程中的 ,如方的调用 的常。通”(Advice):在 的fi ,AOPfl 的作。 种型的通” around”、before”和throws”通”。通”型将在下面。AOP Spring都是以 通”型,一个 fi 的 。入 (Pointcut): 一个通”将发的一系fi 的 。AOP 开发 入 ,例如,使用正 。入(Introduction): 方 到通”的。Spring 入 的fi 到 通”的对currency1。例如,你可以使用一个入使 对currency1IsModifiedfi ,来 化

4、。目 对currency1(Target Object): fi 的对currency1,也 作通” 代理对currency1。AOP代理(AOP Proxy):AOP 的对currency1, 通”。在Spring中,AOP代理可以是JDK代理 CGLIB代理。编(Weaving): 方面来 一个通”对currency1。这可以在编 完成(例如使用AspectJ编 ),也可以在 完成。Spring和 Java AOP一 ,在 完成入。种通”型 :Around通”: 一个fi 的通”,如方调用。这是 大的通”。Aroud通”在方调用前后完成 的 为, 们 fl fi 通 们 的 常来 fl 。

5、Before通”:在一个fi 之前fl 的通”, 这个通”不阻止fi 前的fl (除非 一个常)。Throws通”:在方常 fl 的通”。Spring提供制型的Throws通”,因此你可以书写代码捕获感兴趣的常(和 的“),不 要 Throwable Exception制型转换。After returning通”:在fi 正常完成后fl 的通”,例如,一个方正常,没有常。Around通”是 通用的通”型。大部分基于的AOP(如Nanning和Jboss 4) 提供Around通”。如同AspectJ,Spring提供所有型的通”,我们推荐你使用 为 适的通”型来 要的 为。例如,如果 是 要用

6、一个方的 来更 ,你 一个after returning通”,而不是around通”,虽然around通”也完成同 的事情。使用 适的通”型使编程型变得 单,并减少潜在错误。例如,你不 要调用在around通”中所 使用的MethodInvocation的proceed()方,因此就调用失败。入 的概念是AOP的 键, 使AOP区别于 使用的技术。入 使通”独立于OO的层次 目 。例如,提供声 事务管理的around通”可以应用到跨越个对currency1的一方上。 因此入 构成了AOP的结构要素。下面 我们一个Spring AOP的例“。在这个例“中,我们将一个before advice,这

7、 advice的代码在调用的public方开 前fl 。以下是这个before advice的代码。package com.ascenttech.springaop.test;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;public class TestBeforeAdvice implements MethodBeforeAdvice public void before(Method m, Object args, Object target)throws Throwab

8、le System.out.println(“Hello world! (by “+ this.getClass().getName()+ “)“);fi MethodBeforeAdvice 有一个方before 要, 了advice的。before方共用3个参数, 们提供了相当丰富的信息。参数Method m是advice开 后fl 的方,方名 可以用作判断是否fl 代码的条件。Object args是传给调用的public方的参数数。当 要记日志 ,参数args和fl 方的名 都是非常有用的信息。你也可以改变传给m的参数, 要小心使用这个功;编写初主程序的程序员并不”道主程序可会和传入参

9、数的发生冲突。Object target是fl 方m对currency1的用。在下面的BeanImpl中,每个public方调用前,都会fl advice,代码如下。package com.ascenttech.springaop.test;public class BeanImpl implements Bean public void theMethod() System.out.println(this.getClass().getName()+ “.“ + new Exception().getStackTrace()0.getMethodName()+ “()“+ “ says HE

10、LLO!“);BeanImpl了下面的fi Bean,代码如下。package com.ascenttech.springaop.test;public interface Bean public void theMethod(); 虽然不是 使用fi , 面向fi 而不是面向编程是良的编程践,Spring也鼓励这 。pointcut和advice通配置文件来,因此,fi下来你 编写主方的Java代码,代码如下。package com.ascenttech.springaop.test;import org.springframework.context.ApplicationContext;

11、import org.springframework.context.support.FileSystemXmlApplicationContext;public class Main public static void main(String args) /Read the configuration fileApplicationContext ctx = new FileSystemXmlApplicationContext(“springconfig.xml“);/Instantiate an objectBean x = (Bean) ctx.getBean(“bean“);/Ex

12、ecute the public method of the bean (the test)x.theMethod();我们 读入和处理配置文件开 ,fi下来马上要 。这个配置文件将作为粘 程序不同部分的胶水。读入和处理配置文件后,我们会得到一个 工厂ctx, 一个Spring管理的对currency1都 通这个工厂来。对currency1通工厂 后 可正常使用。仅仅用配置文件 可把程序的每一部分 起来,代码如下。com.ascenttech.springaop.test.BeantheAdvisorcom.ascenttech.springaop.test.Bean.theMethod4个b

13、ean 的次序并不重要。我们在有了一个advice、一个 了正 pointcut的advisor、一个主程序和一个配置的fi ,通工厂ctx,这个fi 本身的一个用。BeanImpl和TestBeforeAdvice都是直fi配置。我们用一个惟一的ID 一个bean 素,并 了一个,这就是全部的工作。advisor通Spring framework提供的一个RegexMethodPointcutAdvisor来。我们用advisor的第一个属性来 所 的advice-bean,第二个属性 用正 了pointcut,保良的性和易读性。后配置的是bean, 可以通一个工厂来 。bean的 看起来比际上要复杂。bean是ProxyFactoryBean的一个, 是Spring framework的一部分。这个bean的 为通以下的3个属性来 。属性proxyInterface 了fi 。属性target向本地配置的一个bean,这个bean一个fi 的。属性interceptorNames是惟一 一个 的属性,这个 所有 要在beanTarget上fl 的advisor。注 ,advisor 的次序是非常重要的。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报