aop里有切点,切面,通知的概念
Term 术语
|
Definition 定义
|
Concern A particular issue
(关注特定问题)
|
感兴趣应用的特定问题、概念、范围。例如,事务管理、持久化、日志、安全等。
|
Crosscutting Concern
(横切关注点)
|
在关注点实现中贯穿了很多类,这在 面向对象(OOP)中通常很难实现和维护。
|
Aspect
(切面)
|
模块化的横切关注点,通过代码的聚合和隔离实现。
|
Join Point
(连接点)
|
在程序或者类执行时的一个点。在Spring的AOP实现中,连接点总是一个方法调用。其他的例子包括访问字段(包括实例中字段的读写),变量和异常处理。
|
Advice
(通知)
|
特定连接点所采取的动作。Spring有几种不同 类型的通知,包括around、before、throws和after returning。在这几种类型的通知中,around是最强大的,在方法调用的前后都有执行一些操作的机会。之前用到的 TraceInterceptor就是around类型的通知,它实现了AOP联盟的MethodInterceptor接口。通过实现下面的Spring接口可以使用其他类型的通知:
Ø MethodBeforeAdvice
Ø ThrowsAdvice
Ø AfterReturningAdvice
|
Pointcut
(切入点)
|
连接点的集合,这些连接点确认何时一个通知将会触发。切入点通常使用正则表达式或者是通配符语法。
|
Introduction
(引入)
|
添加字段或者方法到一个通知类。Spring允许你在任何通知对象上引入新的接口。例如,你可以使用引入以便让任意对象实现IsModified接口,来简化缓存。
|
Weaving
(组织)
|
装配切面来创建一个被通知对象。可以在编译期间完成(像AspectJ做的那样)也可以在运行时完成。本章后面的组织策略部分详细讨论不同的组织策略(也就是实现AOP)。
|
Interceptor
(拦截器)
|
一种AOP实现策略,对与特点的连接点,可能存在一个拦截器链。
|
AOP Proxy
(AOP代理)
|
AOP框架创建的对象,包括通知。在Spring中,一个AOP代理可能是JDK动态代理或者是CGLIB代理。
|
(目标对象)
|
包含连接点的对象。在使用拦截的框架中,它是在拦截器链末端的对象实例。也叫做被通知对象或者被代理对象。
|
切面。 用个比喻会更形象一些。可以把切面理解成一把菜刀,而其他方法就好像是黏糕,如果你要把所有的黏糕都在某个
位置切断,那么就用这个菜刀就行了。这个菜刀,就是我们需要的切面类。
切入点。切入点一般是一个表达式。用上面的例子来说,就是我们对哪些黏糕“下手”。
例如 execution(* com.xyz.someapp.service.*.*(..))
通知。 通过切入点,我们知道要对哪些黏糕下手,但是,我们还得知道要在黏糕的哪个位置下手,是在头部(Before),
尾部(After),还是首尾(Around)等等。
最形象的例子,就是如果你想给所有的DB操作类都加上一个特殊的log,怎么弄呢?是修改所有的DB操作类,还是写一个类,就能让这个类的方法嵌入到所有的DB操作类中?
给哪些类在哪个位置“插入”一些本来没有的代码
这些“插入”的代码都是程序运行的时候动态插入的,所以看起来很神奇
有两种方式,一种是java本身提供了动态代理方式,这种方式基于接口;另一种是cglib这样的,动态修改java运行时的字节码
首先通过切入点来确定要切入到哪些类里
例如
execution(* com.xyz.someapp.service.*.*(..))
然后使用“通知”,确定切入的地点:是在头部(Before),
尾部(After),还是首尾(Around)
分享到:
相关推荐
面向切面编程(AOP,Aspect Oriented Programming)是Spring框架的重要组成部分,它提供了一种在不修改原有业务代码的基础上,插入额外功能的编程模型。Spring AOP使得开发者能够更方便地实现如日志记录、事务管理、...
面向切面编程(AOP,Aspect Oriented Programming)是Spring框架中的一个重要特性,它提供了一种模块化和声明式的方式来处理程序中的横切关注点,如日志、事务管理、安全控制等。AOP的核心概念包括切面、通知、连接...
总的来说,面向切面编程AOP是一种强大的工具,用于管理横切关注点,它使我们能够编写更加模块化、可重用的代码,特别是在大型企业级应用中,如Web开发,它可以极大地提升代码质量和开发效率。通过合理使用AOP,我们...
面向切面编程(Aspect-Oriented Programming,AOP)是Spring框架的核心特性之一,它提供了一种优雅的方式来处理系统的横切关注点,如日志、事务管理、性能监控和权限控制等。在Spring中,AOP主要通过代理模式实现,...
### 面向切面编程(AOP) 面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它旨在提高模块化程度,通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,使得代码更加清晰、...
Spring 面向切面编程AOP实现详解 面向切面编程(AOP)是一种编程技术,旨在将横切关注点从业务逻辑中分离出来,提高系统的可扩展性和可维护性。Spring 作为一个流行的 Java 框架,提供了完备的 AOP 实现机制。 1. ...
AOP面向切面编程.ppt
面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在将系统中的关注点分离,使得代码更加模块化,易于维护和扩展。在传统的面向对象编程(OOP)中,业务逻辑往往与日志、事务管理、权限控制等横...
面向切面编程(AOP)是一种编程范式,它旨在将关注点分离,使得系统中的核心业务逻辑与系统服务(如日志、事务管理、权限控制等)可以解耦。在Android开发中,AOP的应用可以帮助我们更好地组织代码,提高可维护性和...
总的来说,面向切面编程AOP是一种强大的设计模式,它通过Spring框架的实现,使得在Java应用中实现关注点分离变得更加容易。正确地运用AOP,可以极大地提升代码的整洁性和可维护性,同时降低系统的复杂度。
面向切面编程(AOP)是一种编程范式,它旨在减少代码中的重复部分,特别是那些与核心业务逻辑无关但又必须处理的交叉关注点,如日志、事务管理、安全控制等。Spring框架是Java领域中实现AOP的常用工具,它通过提供...
spect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的...
在Spring框架中,面向切面编程(AOP)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。本篇文章将深入探讨如何使用Spring的动态代理机制实现AOP...
### AOP面向切面编程详解 #### 一、AOP概览 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想和技术,它作为OOP(面向对象编程)的一种补充,主要解决了OOP在处理横切关注点方面的不足。在传统的...
面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它旨在提高软件的模块化程度,通过将关注点分离到不同的“切面”中来实现。在.NET环境中,AOP通常通过拦截器(Interceptor)或动态代理...
面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。
面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性和复用性。在Android开发中,AOP常用来处理横切关注点,如日志记录、性能监控、事务管理等,这些关注点往往分散在多个类和方法中。AOP通过将这些通用逻辑...
面向切面编程(Aspect-Oriented Programming,简称 AOP)是一种编程范式,它通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,并将其封装为独立的组件,来降低软件系统的耦合度。AOP 的核心思想是...
在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的功能之一就是AOP(面向切面编程)。本文将详细解析Spring AOP的三种实现方式,帮助你深入理解这一重要概念。 首先,理解AOP的基本概念至关重要。AOP是...
2、面向切面编程AOP 在实现过程中,我尽量贴近实际开发与场景,麻雀虽小,五脏俱全,个人感觉这个项目是web框架搭建的一个极简之道实践。 项目中可能还存在很多的问题,希望大家不吝赐教,谢谢。