`

AOP_基本概念

 
阅读更多

分散关注
   将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,

   只要修改这个行为就可以。

AOP概述
AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中。

AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延

续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

AOP具体实现
AOP是一个概念,并没有设定具体语言的实现,它能克服那些只有单继承特性语言的缺点(如Java),目前AOP具体实现有以下几个项目:
     AspectJ (TM): 创建于Xerox PARC. 有近十年历史,技术成熟。缺点:过于复杂;破坏封装;需要专门的Java编译器。
    动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。

连接点(JoinPoint)

 指那些被拦截到的点,在spring中,这些点指的是方法,因为spring只支持方法类型的连接点。

   基本每个方法的前、后(两者都有也行),或抛出异常时都可以是连接点

通知(Advice)
 指拦截到joinpoint之后所要做的事情,分为 前置通知、后置通知、异常通知(例外通知和最终通知)、环绕通知

   例如:

public Object intercept(Object proxy, Method method, Object[] args,
	MethodProxy methodProxy) throws Throwable {//环绕通知(整个方法)
	PersonServiceImp personServiceImp=(PersonServiceImp)this.targetObject;
	Object result=null;
	if(personServiceImp.getUser()!=null){
	//前置通知
		try{
			result=methodProxy.invoke(this.targetObject, args);
			//后置通知
		}catch(Exception e){
			//例外通知
		}finally{
			//最终通知
		}
	}
	return result;
}

切入点(Pointcut)

 上面说的连接点的基础上,来定义切入点,你的一个类里,有15个方法,那就有几十个连接点了对把,但是你并不想在所有方法附近都使用通知,

   你只想让其中的几个,在调用这几个方法之前,之后或者抛出异常时干点什么,那么就用切点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法。

切面(Aspect)

   切面是通知和切入点的结合。现在发现了吧,没连接点什么事情,连接点就是为了让你好理解切点,搞出来的,明白这个概念就行了。

   通知说明了干什么和什么时候干(什么时候通过方法名中的before,after,around等就能知道),而切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义。

引入(introduction)

 允许我们向现有的类添加新方法属性。这不就是把切面(也就是新方法属性:通知定义的)用到目标类中吗

目标(target)

 引入中所提到的目标类,也就是要被通知的对象,也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面。而自己专注于业务本身的逻辑。

代理(proxy)

   实现整套aop机制

织入(weaving)

   把切面应用到目标对象来创建新的代理对象的过程。有3种方式,spring采用的是运行时

分享到:
评论

相关推荐

    spring_AOP.rar_876.aop_java aop_spring_aop

    首先,了解AOP的基本概念。面向切面编程是一种编程范式,旨在减少代码重复,并将关注点分离。它将那些与业务逻辑不直接相关的部分(如日志、异常处理、性能统计等)抽取出来,形成独立的“切面”,然后在运行时动态...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    本篇文章将详细阐述Spring AOP的基本概念、种类、代理原理、通知类型以及切入点,帮助你深入理解这一强大的编程模式。 一、AOP概念 1. Joinpoint(连接点):在Spring AOP中,Joinpoint指的是程序执行的某个特定点...

    spring_aop_xml.rar_java aop_xml aop

    首先,我们要理解AOP的基本概念。AOP是一种编程范式,它允许开发者定义“切面”,这些切面可以包含业务逻辑的各个部分,比如日志、安全检查等。在运行时,这些切面会被“织入”到其他对象中,使得关注点分离,提高了...

    8_24_SpringAOP_springaop_

    在本教程中,我们将深入探讨Spring AOP的基本概念、配置以及如何在实践中应用。 首先,Spring AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知(Advice)、切入点(Pointcut)和织入(Weaving)。切...

    aop_lib.rar

    - `aspectjrt.jar`:AspectJ运行时库,实现了AOP的核心概念,如切面、通知、连接点等。 - `aspectjweaver.jar`:AspectJ的织入器,可以在编译时或运行时动态地将切面织入到目标代码中。 - `aopalliance.jar`:一...

    C#_AOP_案例

    C#中的AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它旨在提高代码的可重用...这个案例不仅涵盖了基本的AOP概念,还可能涉及实际开发中的一些最佳实践和技巧,对于提升软件设计能力非常有帮助。

    spring_aop_拦截实例

    首先,我们来理解Spring AOP的基本概念。AOP的核心是代理,Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理基于接口,当目标对象实现了接口时使用;而CGLIB代理则是在运行时动态创建目标类的子类,...

    spring的aop_ioc

    AOP的基本元素** - **切点(Pointcut)**:定义拦截的执行点,如方法的执行。 - **通知(Advice)**:定义在切点上执行的具体行为,如前后置通知、异常通知等。 - **切面(Aspect)**:包含切点和通知的组合。 - **...

    Spring_AOP_XML配置

    首先,让我们深入了解AOP的基本概念: 1. **切面(Aspect)**:切面是关注点的模块化,它封装了跨越多个对象的行为或责任。在Spring中,切面可以通过定义一个包含通知和切入点的类来创建。 2. **通知(Advice)**:...

    Spring_aop_xml.zip

    首先,让我们深入了解Spring AOP的核心概念。AOP通过切面(Aspect)来组织代码,切面是关注点的模块化,这些关注点通常涉及多个对象。在Spring中,切面可以由一个或多个通知(Advice)组成,通知在特定的连接点...

    Spring_AOP_before.rar_AOP@before怎么用_Before

    AOP的基本概念** AOP是一种编程范式,它将关注点模块化为独立的“切面”,每个切面封装了特定的职责,如日志记录、安全检查或事务处理。通过AOP,我们可以定义这些关注点,并在运行时将它们织入到应用程序的多个点...

    学习Spring笔记_AOP_Annotation实现和XML实现

    首先,让我们了解一下AOP的基本概念。AOP的核心是切面(Aspect),它将关注点(如日志、事务)与业务逻辑分离,形成独立的模块。切点(Join Point)是程序执行过程中的特定点,如方法调用。通知(Advice)是在特定...

    面向方面编程_AOP_介绍.pdf

    **基本概念:** 1. **切面(Aspect)**:代表横切关注点的模块化。它是AOP的核心概念之一,可以视为对系统中多个点共享的行为的封装。 2. **连接点(Joinpoint)**:程序执行过程中的特定位置,例如方法调用或异常抛出...

    jbossaop_quickref.pdf

    切面是面向切面编程的基本单元,它封装了横切关注点的实现逻辑。例如,日志记录、事务管理等可以在不同的类和方法中重用的功能。 #### 2.2 Interceptors - 拦截器 拦截器是在目标对象的方法调用前后执行的代码。...

    手把手教你用Java实现AOP_.docx

    总的来说,虽然Spring的AOP功能强大且易于使用,但通过理解JDK动态代理,我们可以在不依赖Spring的情况下实现基本的AOP功能,这对于理解AOP的概念和工作原理非常有帮助。在实际开发中,结合设计模式如装饰者模式、...

    Spring AOP面向方面编程原理:AOP概念

    #### 二、AOP基本概念 AOP是一种编程范式,其目的是提高模块化程度,特别是将那些对很多类都具有影响的公共行为封装起来,以便减少系统的耦合度,并且增加可重用性。Spring AOP是在Spring框架的基础上实现的一种面向...

    SpringAOP.rar_springAOP

    本文将深入探讨Spring AOP的基本概念、核心组件以及实际应用。 一、Spring AOP概述 1.1 面向切面编程 面向切面编程是一种编程范式,旨在将关注点分离,使程序结构更清晰,提高代码重用性和可维护性。在Spring AOP...

    Spring_aop.rar_spring aop

    Spring AOP的基本概念** - **切面(Aspect)**:切面是封装了特定关注点的一组通知(advises)和连接点(join points)的集合。例如,日志记录、事务管理、性能监控等都可以作为独立的切面来处理。 - **通知...

    Spring动态代理第三方依赖jar.zip_aopalliance_1.0.jar_aspectjrt_aspectjweav

    这个库定义了如MethodInterceptor和Pointcut等基本的AOP概念,使得Spring和其他AOP框架如AspectJ可以共享相同的接口。在Spring中,你可以通过实现这些接口来创建自定义的切面,实现拦截器功能。 其次,aspectjrt-...

Global site tag (gtag.js) - Google Analytics