AOP基本概念讲解

原创 2006年11月01日 16:40:00

AOP,面向切面编程。

举一个最简单的例子说明什么是面向切面编程,银行柜员机程序,它实现的商业逻辑很简单,如果客户取钱就在客户的帐户上做减法,如果存钱就做加法。这样的开发任务交给程序员他最开心,因为这对他来说小菜一碟。

而实际上银行和客户对只实现这2个功能的程序是不放心的,于是就引进了事务处理保证操作的完整性、日志功能完成报表稽核,这时程序员就要郁闷了:要分析每一个商业逻辑,在代码开始的部分声明事务开始、代码结束的部分声明事务结束,还要捕获中间发生的异常,进行异常处理;对于涉及到资金变化的逻辑结束的时候要写日志,这个相对简单,但是成百上千的ctrl+c/ctrl+v对程序员来说是也是不能忍受的。

从上面的例子可以看到,我们真正需要的可能就那么一两条代码,而实际上我们已经写了一二十行。AOP就是来解决这种问题的。让程序员只关注核心代码,切面代码(上面的事务处理、日志记录就是切面,后面还会讲到)进行模块化。实际使用大概是这样的:对于事务处理,程序运行到核心代码处,拦截器(AOP框架提供的)激活,触发事务处理切面代码声明事务开始,核心代码结束,拦截器再次激活,触发事务处理切面代码事务提交。

这样我们可以让高级程序员先编写事务处理切面模块,测试通过后就可以给初级程序员用了;初级程序员们负责编写各种各样的商业核心逻辑代码,测试通过后提交给配置程序员,配置程序员将商业代码和切面模块进行组合配置,最后进行合并测试,测试通过,结束。按这种方式开发,方便测试、程序模块之间低耦合、非侵入式,是不是老板开心、程序员也开心呢?

刚开始看AOP的时候总是被它的那些概念搞得一头雾水,这里是我的一些理解:

  • Concern(要素):程序关注的一个区域。比如,有适合AOP的像事务处理和不适合的像产品组合分类(适合OOP)。

 

  • Crosscutting Concern(横切要素):Concern的一种,其实就是适合AOP的Concern,横切我理解是和OOP相对的意思,OOP一般都是继承树,而横切就将有相同需要的类放到了一个平面进行处理。好像父类生物,下面继承有大白菜、猪,我们横切这2个类,放到我们的食品工厂要进行食品罐装加工(第一步清洗杀菌...最后一步打印生产日期)这样就分别生产出了韩国泡菜和午餐肉

 

  • Aspect(切面),Crosscutting Concern的模块化,将抽象的东西Crosscutting Concern具体了一下。如事务处理、食品罐装加工。

 

  • Join Point(连接点):程序或类执行过程中的一个点。一般是核心商务逻辑的某一个方法,好像银行柜员机程序的资金入库方法saveMoney()。

 

  • Advice(通知):在Join Point上执行的一个动作,通知一般通过拦截器调用。有这几种类型的Advice,around(包围型)、before、after。事务处理就是around型,日志记录是after型。

 

  • Pointcut(切入点):这个东东很有用,它是一系列的Join Point,用通配符或者正则表达式表示,比如save*表示所有以save开头的方法,Pointcut和Advice绑定,这样Advice就可以通知满足条件的一类Join Point。比如所有事务处理切面around以save开头和update开头的方法,而select开头的方法不受影响。

 

  • Introduction(引入):不是很理解,以后补充吧。

 

  • Target Object(目标对象):包含Join Point的对象,也就是被就Advice的类,也就是是商务逻辑对象,比如银行柜员机类。这个对象永远是一个被代理的对象。

 

  • AOP Proxy(AOP代理):由AOP框架创建的对象,实现advice的执行。

 

  • Weaving(织入):将Aspec模块织入核心商务逻辑,比如,将事务处理模块和银行柜员机程序通过配置结合起来,决定什么情况下事务处理模块被通知调用。
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AOP基本概念

一 几个基本概念 1 切面(Aspect) :官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”。业务点好不好~ 2 连接点(Join Point):指的是程序运行中的某个阶段点...

AOP简介和基本概念【理解】【重点】

AOP简介【理解】【重点】 1.AOP(Aspect Oriented Programing)面向切面/方面编程 2.AOP隶属软件工程的范畴,指导开发人员如何制作开发软件,进行结构设计 3.A...

我所理解的Spring AOP的基本概念

Spring AOP中的概念理解

Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解

首先我们来看一下官方文档所给我们的关于AOP的一些概念性词语的解释: 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例...

Spring中AOP基本概念及配置方式

AOP概念AOP基本概念 连接点(JoinPoint):在AOP中表示“在哪里干” 切入点(Pointcut):在AOP中表示“在哪里干的集合”,可以认为是连接点的集合 通知(Advice):在AOP...

面向切面编程(如Spring AOP)的一些基本概念

今天看下AOP相关的内容,有些概念是很早前看了,但是现在又有点忘记了,在这里在记录下,方便需要时回顾。其实最初看到AOP的时候,首先联想到的是装饰者模式,他也可以起到动态的增加功能,而又不影响原有的代...

spring中AOP基本概念(14)

2016/1/18 10:16:551.什么是AOP AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一...

Spring---AOP基本概念以及Advice5种类型的通知注解应用实例

AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封...

IOC和AOP的一些基本概念

IOC和AOP的一些基本概念 介绍 IOC 介绍 IOC   一、什么是IOC IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系...

Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解

首先我们来看一下官方文档所给我们的关于AOP的一些概念性词语的解释: 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)