`

如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(

 
阅读更多
a. 连接点(Joinpoint):程序执行的某个特定位置(如:某个方法调用前、调用后,方法抛出异常后)。一个类或一段程序代码拥有一些具有边界性质的特定点,这些代码中的特定点就是连接点。Spring仅支持方法的连接点。
b. 切点(Pointcut):如果连接点相当于数据中的记录,那么切点相当于查询条件,一个切点可以匹配多个连接点。Spring AOP的规则解析引擎负责解析切点所设定的查询条件,找到对应的连接点。
c. 增强(Advice):增强是织入到目标类连接点上的一段程序代码。Spring提供的增强接口都是带方位名的,如:BeforeAdvice、AfterReturningAdvice、ThrowsAdvice等。很多资料上将增强译为“通知”,这明显是个词不达意的翻译,让很多程序员困惑了许久。
说明: Advice在国内的很多书面资料中都被翻译成”通知”,但是很显然这个翻译无法表达其本质,有少量的读物上将这个词翻译为”增强”,这个翻译是对Advice较为准确的诠释,我们通过AOP将横切关注功能加到原有的业务逻辑上,这就是对原有业务逻辑的一种增强,这种增强可以是前置增强、后置增强、返回后增强、抛异常时增强和包围型增强。
d. 引介(Introduction):引介是一种特殊的增强,它为类添加一些属性和方法。这样,即使一个业务类原本没有实现某个接口,通过引介功能,可以动态的未该业务类添加接口的实现逻辑,让业务类成为这个接口的实现类。
e. 织入(Weaving):织入是将增强添加到目标类具体连接点上的过程,AOP有三种织入方式:①编译期织入:需要特殊的Java编译期(例如AspectJ的ajc);②装载期织入:要求使用特殊的类加载器,在装载类的时候对类进行增强;③运行时织入:在运行时为目标类生成代理实现增强。Spring采用了动态代理的方式实现了运行时织入,而AspectJ采用了编译期织入和装载期织入的方式。
f. 切面(Aspect):切面是由切点和增强(引介)组成的,它包括了对横切关注功能的定义,也包括了对连接点的定义。
分享到:
评论

相关推荐

    Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理

    总结,Spring AOP的基于Schema支持使得在XML配置中声明切面变得直观和易于理解,而JoinPoint则为我们提供了动态访问当前执行点的能力。CGLIB作为Spring AOP的底层代理技术,为我们提供了对未实现接口类的代理能力,...

    SpringAop的简单理解.pdf

    2. 切点(Pointcut)是用于匹配连接点的表达式,它决定了增强(Advice)应该应用在哪些连接点上。 3. 增强(Advice)是切面的具体实现逻辑,它在特定的连接点被织入。例如,可以在方法调用前后添加日志记录或事务...

    day39-Spring 06-Spring的AOP:带有切点的切面

    在Spring框架中,AOP(Aspect Oriented Programming,面向切面编程)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志、事务管理等。在"day39-Spring 06-Spring的AOP:带有切点的切面...

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

    1. Joinpoint(连接点):在Spring AOP中,Joinpoint指的是程序执行的某个特定点,如方法的执行。在Spring中,Joinpoint主要指的是方法的调用。 2. Advice(通知):Advice是在特定Joinpoint上执行的代码片段。...

    spring3.x的读书笔记-4

    AOP 的核心概念包括连接点、切点、增强、目标对象、引介、织入和代理。 1. 连接点(Joinpoint):连接点是指程序执行过程中特定的点,比如方法的调用、构造器的执行等。在 Spring 中,连接点通常指的是方法的执行。...

    AOP根据方法名匹配织入

    在AOP中,这些关注点被称为切面,而切面的织入则是将切面应用到目标对象的过程。 在Java世界里,Spring框架是实现AOP最常用的库。"AOP根据方法名匹配织入"指的是通过指定方法名来决定哪些方法应该被切面影响。这种...

    aop的详细总结(包含例子)

    1. Joinpoint(连接点):在程序执行过程中能够插入切面的特定点,例如方法的调用。在Spring AOP中,Joinpoint通常是方法。 2. Advice(通知):在特定Joinpoint上执行的代码,根据执行时机不同,包括Before、After...

    Spring中的AOP(五)——在Advice方法中获取目标方法的参数

    在Spring AOP中,切面(Aspect)是关注点的模块化,它包含切点(Pointcut)和通知(Advice)。切点定义了应用中哪些方法将被拦截,而通知定义了在这些方法执行时应进行的操作。当我们说“在Advice方法中获取目标方法...

    srping aop应用

    在Spring AOP中,"切面"是关注点的模块化,它包括了连接点(join point)、通知(advice)、切点(pointcut)、引入(introduction)、目标对象、代理(proxy)以及织入(weaving)。下面我们将详细讲解这些概念: ...

    Spring AOP需要的jar

    这个库包含了一些基本的AOP概念,如JoinPoint(连接点)、Pointcut(切点)、Advice(通知)等的接口。这些接口为创建和使用切面提供了通用的API,无论你选择使用Spring自己的AOP还是其他AOP实现,如AspectJ,都可以...

    Spring AOP 类图

    而joinpoint类图则帮助我们理解连接点的概念和其在程序执行流程中的位置。 总的来说,Spring AOP提供了一种优雅的方式来处理系统中的横切关注点,通过类图的学习,我们可以更深入地理解其设计理念,从而更好地应用...

    研究下Spring中AOP的实现?

    AOP的核心是切面(Aspect)、通知(Advice)、连接点(Join Point)、切点(Pointcut)和织入(Weaving)。切面是封装了横切关注点的模块;通知是在特定连接点执行的行为;连接点是程序执行过程中可以插入通知的点,...

    springAOP中文文档

    5. **连接点 (Joinpoint)**:程序执行过程中的某个特定点,如方法调用、字段访问等。 6. **切点 (Pointcut)**:一系列连接点的集合。通过切点来定义哪些连接点会触发通知。 #### 三、AspectJ **AspectJ** 是 Java ...

    spring入门学习-5、AOP概念及特点.pdf

    - **注意**:在 Spring AOP 中,连接点总是方法的执行点,即只支持方法级别的连接点。 4. **切点(Pointcut)** - **定义**:定义了通知被应用的位置,即匹配通知所要织入的一个或多个连接点。 - **作用**:通过...

    Spring-AOP .pptx

    - **切点(Pointcut)**:根据一定条件选择的连接点,用于指定何时应用增强。 - **增强(Advice)**:在特定连接点执行的代码,定义了切入时机和执行的任务。 - **目标对象(Target)**:包含主要业务逻辑的类的对象。 ...

    spring 应用aop 实例

    首先,AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是AOP中的一个模块,包含了一组相关的通知,这些通知会在特定的连接点执行。通知定义了...

    SpringAop.rar_aop

    Spring AOP,全称为Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,主要用来处理系统中的横切关注点,如日志、事务管理、权限控制等。通过AOP,我们可以将这些分散在代码各处的重复逻辑...

    spring aop 详细介绍

    Advice是指在特定连接点(Joinpoint)执行的代码片段,它代表了横切关注点的实现。在Spring AOP中,Advice有四种类型: - **前置通知(Before Advice)**:在目标方法调用之前执行。 - **后置通知(After Return ...

    Spring aop

    4. **切点(Pointcut)**:切点是匹配连接点的规则,定义了通知将在哪些连接点应用。可以使用表达式或自定义注解来定义切点。 5. **织入(Weaving)**:织入是将切面应用到目标对象以创建新的代理对象的过程。...

    spring-aop.jar

    5. **织入(Weaving)**:织入是将切面与目标对象连接的过程,Spring AOP支持运行时织入和编译时织入。在spring-aop.jar中,`org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator`类负责...

Global site tag (gtag.js) - Google Analytics