`
sunxboy
  • 浏览: 2871747 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

spring AOP 理论知识点总结

阅读更多

1.1 AOP 的概念

简单地说, AOP 就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理 (Transactions) ,日志管理( logging, tracing, profiling and monitoring  记录跟踪 优化 校准),权限控制( Authentication ),同步 (Synchronization), 封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

实质上, AOP 只是 OOP 的一种补充或某种改进,它转换了编程的范式和视角,关注了一直以来被 OOP 忽 略或者说未能解决好的角落,使开发人员可以更好地将本不该彼此纠缠在一起的责任(如银行业务和事务处理)分离开来。通过面向切面的编程,可以将程序的责任 分开,对象与切面互不干扰。面向切面的模块并非显式地为对象所调用,而是通过或注入或截取的方式,去获得被封装的对象内部方法间的消息,然后做出相应地处 理。也许面向切面的模式破坏了对象的封装,却正其如此,方才能降低模块与模块之间的耦合度。同样地,通过对 方面 的封装,将这些通用的功能从不同的类中分离出来,使不同的模块都能共享同样的 方面 ,这也极大地减少了重复代码。

Spring AOP 核心技术还是动态代理, Spring 的代理实现方式有两种,默认使用 CGLIB ,也可以选择使用 JDK 的代理,这一切对开发人员来说是透明的,可以不关心这些。

 

1.2 AOP 的基本术语

Spring 为例:

1. 面( Aspect ): 一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是 J2EE 应用中一个关于横切关注点的很好的例子。 Spring AOP 中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解( @AspectJ 风格)来实现。

2. 连接点( Joinpoint ): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 Spring AOP 中,一个连接点 总是 代表一个方法的执行。 通过声明一个 org.aspectj.lang.JoinPoint 类型的参数可以使通知( Advice )的主体部分获得连接点信息。

3. 知( Advice ): 在切面的某个特定的连接点( Joinpoint )上执行的动作。通知有各种类型,其中包括 “around” “before” “after” 等通知。 通知的类型将在后面部分进行讨论。许多 AOP 框架,包括 Spring ,都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。

4. 切入点( Pointcut 匹配连接点( Joinpoint )的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。 切入点表达式如何和连接点匹配是 AOP 的核心: Spring 缺省使用 AspectJ 切入点语法。

5. 引入( Introduction (也被称为内部类型声明( inter-type declaration ))。声明额外的方法或者某个类型的字段。 Spring 允许引入新的接口(以及一个对应的实现)到任何被代理的对象。 例如,你可以使用一个引入来使 bean 实现 IsModified 接口,以便简化缓存机制。

6. 目标对象( Target Object 被一个或者多个切面( aspect )所通知( advise )的对象。也有人把它叫做 被通知(advised) 对象。 既然 Spring AOP 是通过运行时代理实现的,这个对象永远是一个 被代理(proxied) 对象。

7.AOP 代理( AOP Proxy AOP 框架创建的对象,用来实现切面契约( aspect contract )(包括通知方法执行等功能)。 Spring 中, AOP 代理可以是 JDK 动态代理或者 CGLIB 代理。 注意: Spring 2.0 最新引入的基于模式( schema-based )风格和 @AspectJ 注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。

8. 织入( Weaving 把切面( aspect )连接到其它的应用程序类型或者对象上,并创建一个被通知( advised )的对象。 这些可以在编译时(例如使用 AspectJ 编译器),类加载时和运行时完成。 Spring 和其他纯 Java AOP 框架一样,在运行时完成织入。

通知的类型:

1. 前置通知( Before advice 在某连接点( join point )之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。

2. 返回后通知( After returning advice 在某连接点( join point )正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。

3. 抛出异常后通知( After throwing advice 在方法抛出异常退出时执行的通知。

4. 后通知( After (finally) advice 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

5. 环绕通知( Around Advice 包围一个连接点( join point )的通知,如方法调用。这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。

 

 

 



 

 

分享到:
评论

相关推荐

    spring AOP 理论知识点总结.wps

    spring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wps

    Spring aop 性能监控器

    记住,理论知识与实际操作相结合才能更好地掌握技术。 总结来说,Spring AOP性能监控器通过切面编程实现了对目标方法的无侵入性监控,通过自定义注解、切面类以及配置,我们可以轻松地记录和分析应用程序的性能数据...

    Spring基本知识点教程+案例演示

    ### Spring基本知识点教程+案例演示 #### Spring框架简介 Spring框架是为了解决企业级应用开发的复杂性而诞生的一款轻量级Java平台框架。它最初由Rod Johnson创建,后来发展成为Spring源代码项目,该项目由Pivotal...

    spring - 副本.zip

    通过查看并运行这个项目,你可以更好地理解上述理论知识,并亲手实践AOP的配置与应用。 总结,Spring AOP通过XML配置文件为开发者提供了一种灵活的方式来处理系统的横切关注点,使得代码更加整洁、可维护。通过深入...

    java面试大全。各大公司面试总结。知识点总结,共31个文档

    Java面试大全涵盖了大量的技术知识点,这些内容通常会出现在各大公司的面试过程中。为了帮助你更好地准备,以下是基于描述中提到的“31个文档”可能涉及的一些核心Java面试知识点的详细阐述: 1. **基础概念**:...

    java学习知识点总结

    Java学习知识点总结 Java语言作为一款广泛应用于企业级开发、移动应用及大数据处理的语言,其学习涵盖了许多方面。本资源包提供了从基础到高级的全面Java学习材料,包括了Java基础、前端技术、Spring框架以及多线程...

    java之hibernate和spring技术难点及其要点总结

    ### Java之Hibernate和Spring技术难点及其要点总结 #### Hibernate与Spring...通过以上对Hibernate和Spring技术栈中的关键知识点的梳理,希望能帮助读者更好地理解和掌握这两个框架,从而在实际开发中更加游刃有余。

    有关spring的一些学习总结

    在本学习总结中,我们将深入探讨Spring的主要特性和关键知识点。 首先,Spring的核心是IoC(Inversion of Control)容器,也称为依赖注入容器。它负责管理对象的生命周期和对象之间的依赖关系。通过XML配置文件或...

    spring3教程

    每个章节都详细讲解了相关知识点,包括理论介绍、代码示例和实战指导,是学习Spring3的宝贵资料。 总结,Spring3作为一款强大且全面的Java开发框架,为开发者提供了众多实用工具和优秀设计模式,旨在降低企业级应用...

    秋招季面试经验资源知识点总结-备战秋招季.docx

    ### 秋招季面试经验资源知识点总结 #### 一、通用资源 1. **CSDN技术社区**: - **资源概述**:CSDN技术社区作为一个知名的开发者技术交流平台,提供了丰富的技术资料和面试题汇总。尤其针对IT领域的候选人来说,...

    史上最最全的Spring资料

    这部分的学习将帮助你将理论知识转化为实践经验。 总结起来,这份"史上最最全的Spring资料"是一个全面的Spring学习路径,从基础到高级,从理论到实践,覆盖了Spring的各个方面。无论你是初学者还是经验丰富的开发者...

    JAVA核心知识点整理

    综上所述,"JAVA核心知识点整理"涵盖了Java开发的各个方面,从基础到高级,从理论到实践,是成为一名专业Java开发者所必须掌握的内容。通过深入学习并实践这些知识点,将有助于提升个人技能,应对各种开发挑战。

    Spring demo 2017-04-18

    总结,Spring的自动装配、AOP、泛型依赖注入和JDBC的使用都是其强大功能的体现,理解并熟练运用这些知识点,能帮助我们更好地构建健壮、灵活的应用系统。通过"Spring demo 2017-04-18"项目的学习,我们可以将理论...

    Spring攻略(第二版)高清版.pdf

    Spring AOP(面向切面编程)也是书中讲解的重点,通过它,开发者可以将横切关注点(如日志、事务管理)与业务逻辑分离。 Spring框架与云计算的集成也在本书中有所涉及,尤其是通过Spring集成Google App Engine,...

    springStudy .zip

    《Spring框架基础学习指南》 在Java开发领域,Spring框架无疑是最重要的工具之一,它以其...在这个过程中,官方文档是我们的主要参考资料,而本文档“springStudy”中的示例将帮助我们更好地理解和实践这些理论知识。

    Pro Spring 3.pdf

    以下是基于给定文件信息生成的关键知识点: ### Spring框架简介 Spring框架是一种用于构建Java应用的强大、轻量级框架,它提供了一种解决企业级应用开发中常见问题的统一方法。Spring的核心功能包括依赖注入...

    学习spring的好东东,包括中文开发文档及一些例子

    总结来说,这个压缩包提供了全面的学习Spring的资源,不仅有官方的参考文档,也有实战教程和理论讲解,适合不同层次的开发者进行学习。通过这些资料,你可以系统地理解Spring框架的各个方面,从理论到实践,从基础到...

    Pro Spring 3

    该书通过丰富的实例和详尽的理论知识,帮助读者掌握Spring的核心特性,包括依赖注入(IoC)和面向切面编程(AOP)。此外,《Pro Spring 3》还涵盖了Spring框架在实际项目中的应用案例,如数据访问、事务管理、Web...

    达内2012三大框架之spring附pdf和代码(最新版pdf)

    配合代码实例,学习者能够更直观地理解这些理论知识,并在实际项目中运用。通过达内的教学系统升级5.0版本,这份教程应该融入了更多实用案例和最佳实践,帮助学员快速提升技能。 总结,Spring框架是Java开发中的...

    Spring学习案例

    PPT可能是对Spring框架理论知识的总结,包括IoC和AOP的概念解释,数据库操作的步骤,以及如何在实际项目中应用这些概念。它可能包含关键概念的图示,帮助理解复杂的概念,并提供一些代码示例的截图。 通过这个...

Global site tag (gtag.js) - Google Analytics