AOP面向切面编程,是一种编程思想,并不是Spring专有,Spring是封装代理模式完成,之前的博客中也写到了关于AOP的文章,Filter和代理,请见《以此之长,补彼之短----AOP(Filter)》和《以此之长,补彼之短----AOP(代理模式)》。这篇主要介绍SpringAOP的几个概念和一般用法,不再具体细说每个名词的来源,从用法中读者应该就会体会到。下面用三峡大坝作为例子,通俗的来理解几个生涩的名词。

场景:为了合理利用长江丰富水资源,要在长江流域修建一个大坝,并且要在大坝上建立一个汛期报警系统,防止水位过高带来的安全隐患。

切入点(Pointcut):修大坝首先要定位在何地修建,三峡水流湍急,成为首选之地,在AOP中有个专业的名词叫切入点,这个例子中,三峡就是切入点。在程序中,切入点一般是一个或多个符合某种规则的方法,用正则表达式来表示,如:expression= "execution(* add*(..)),Pointcut是用来订阅连接点的。

有了修建的地址,接下来就要建造大坝了,那这个大坝就是Spring中所说的切面:

切面(Aspect):三峡大坝中拦水的“大坝”,可以把它想象成一个没有具体实现的框架。在程序中,切面是我们想要插入的模块,可以理解成一层,或者一个类,也可以是一个应用(类比较好理解)。切面是一个模块化的过程,善于发现合理的切面是我们在应用AOP最重要的一部分。

通知(Advice):有了大坝这个框架后(可以理解成一个类),就该实现他了,汛期报警系统是大坝配套设施的其中之一(可以理解成类中的一个方法)。Advice是横向关注点的具体实现者。该汛期报警系统由如下几种报警类型:

A.前置通知(Beforeadvice):在水位还未到达警戒线时汛期报警系统发出通知(执行方法)。调用目标对象方法之前执行。

B.后置通知(Afterreturning advice):水位已超过警戒线通知(执行方法)。调用目标对象方法之后执行。

C.异常通知(Afterthrowing advice):出现地震等异常情况时发出通知。目标对象方法出错后执行。

D.最终通知(After(finally)advice):发生异常情况,或水位到了警戒线,都会发出通知。目标对象方法出错或者执行完成后执行。

E.环绕通知(AroundAdvice):在水位未到达或已超过警戒线时都会发出通知。目标对象方法执行前和执行后都会执行通知。

连接点(Joinpoint):这个概念比较晦涩,它指的是方法调用,指符合切入点具体的方法调用称为连接点。比如在addUser()方法前添加事务管理(用AOP技术),那么把addUser()的调用称之为连接点。

目标对象(TargetObject):这里指长江。程序中是被通知对象。

织入(Weaving):大坝修在三峡的过程称之为织入,进一步看就是把Advice用到Joinpoint上。织入就是把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。

AOP代理(AOPProxy):在SpringAOP中有目标的概念,有些AOP是没有目标的,他会把代理这类采用一种编译器,把代理上所有的控制行为全部放到目标上,相当于采用编译器直接把要控制的东西全部编译到一个类里,就没有了目标的概念。Spring是有单独的概念的,在运行时来调用目标,这就是代理的功能。

引入(Introduction):动态的为某个类增加或减少方法。

本文原地址:

http://blog.csdn.net/bjyfb/article/details/8522849

以下是我自己看完之后的总结

切入点 代表什么时候调用切面的代理对象

通知  切面代理对象中的某个具体实现方法,来告诉系统什么时候该使用切面了   分前置 后置 环绕 异常 最终

连接点  调用使用“通知”也就是代理对象中的某个具体实现方法就是连接点

织入  就是将切面这个代理对象放在切入点处并且创建一个被通知的对象

AOP及专有名词通俗解答的更多相关文章

  1. Hadoop专有名词

    Hadoop专有名词 一. HDFS 二. MapReduce 1.MRAppMaster:MapReduce Application Master 负责整个过程调度和协调的 2.MapTask:在M ...

  2. Spring框架的AOP编程,最通俗的语言解释,易懂易学

    第七章:AOP技术 前言: AOP技术是根据动态代理设计模式进行的技术.动态代理技术分jdk动态代理和cglib动态代理 jdk动态代理特点: (1)继承java.lang.reflect.proxy ...

  3. 专业术语/Java专有名词

    微服务 Web Service WebAPI(MicroSoft) RESTful RPC 微服务 服务拆分,利用轻量化机制(通常为HTTP源API)实现通信,复杂度可控,独立部署,技术选型灵活,容错 ...

  4. spring学习九 spring aop详解

    本文来自于:https://www.cnblogs.com/jingzhishen/p/4980551.html AOP(Aspect-Oriented Programming,面向方面编程),可以说 ...

  5. (spring-第16回【AOP基础篇】)基本概念

    AOP(Aspect Oriented Programing),面向切面方程.介绍具体定义前,先看一个例子: package com.baobaotao.concept; public class F ...

  6. [转载]AOP面向方面编程

    1.引言 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块.于是出现了以系统模块化特性的面向对象程序设计技术.模块化的面向对象编程极度极地提 ...

  7. AOP技术基础

    1.引言 2.AOP技术基础 3.Java平台AOP技术研究 4..Net平台AOP技术研究 2.1 AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto ...

  8. AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!

    http://wayfarer.cnblogs.com/articles/241024.html 抄在这里,方便复习! AOP技术基础   1.引言2.AOP技术基础 3.Java平台AOP技术研究4 ...

  9. 依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦(转good)

    依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦.所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见 ...

随机推荐

  1. http协议中302和303的区别

    http1.0协议中只有302码,没有303状态码:http1.1,在默认情况下,很多服务端基础程序,为了兼容http1.0,在遇到本应响应303时,也给客户端响应了302. 碰到的问题: 场景: 在 ...

  2. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  3. 重读 必须知道的.NET

    1 .public ,对访问成员无限制,属于访问级别最高的权限. protected 访问包含类或者丛类派生类的类. internal  仅限于程序集, protected inernal 访问仅限于 ...

  4. 选择排序—堆排序(Heap Sort) 没看明白,不解释

    堆排序是一种树形选择排序,是对直接选择排序的有效改进. 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆.由堆的定义可以看出,堆顶元素(即第一个元素) ...

  5. java常用集合总结

    1.线程安全 线程安全就是说多线程访问同一代码,不会产生不确定的结果. 2.List类和Set类List类和Set类是Collection集合接口的子接口.Set子接口:无序,不允许重复.List子接 ...

  6. 【Docker】 积累

    ■ 磁盘空间和docker资源之间的关系 通过docker info | grep Space可以看到Docker占据的磁盘空间的信息.其中Data Space Used表示实际上docker资源占用 ...

  7. WCF跨域解决方法及一些零碎的东西。

    之前发过一篇随笔,说的WCF配置文件配置问题.里面也配了跨域支持,但是jsoncollback只支持Get请求,Post请求是解决不了,所以这里把真正的WCF跨域问题贴出来. 话不多说,直接帖配置文件 ...

  8. mysql基础篇 - 数据库及表的修改和删除

    基础篇 - 数据库及表的修改和删除         修改和删除 一.实验简介 本节实验中,我们将学习并实践如何对数据库的内容做修改,删除,重命名等操作. 二.实验准备 在正式开始本实验内容之前,需要先 ...

  9. 支付宝sdk集成,报系统繁忙 请稍后再试(ALI64)

    移动快捷支付,往往需要集成支付宝的sdk,集成的过程相对简单,只要按照支付宝的文档,进行操作一般不会出问题.            下面主要说明一下,集成sdk后报"系统繁忙 请稍后再试(A ...

  10. android 自定义ScrollView实现背景图片伸缩(阻尼效果)

    android 自定义ScrollView实现强调内容背景图片伸缩(仿多米,qq空间背景的刷新) 看到一篇文章,自己更改了一下bug: 原文地址:http://www.aiuxian.com/arti ...