第五章 面向切面编程(AOP)之一

简介:
大家可能对面向对象的编程已经很熟悉了,目前面向对象的技术已经很流行。其得到了很多开发者的认同。比起以前的面向过程,简直是一种质的飞跃。既然有面向对象的编程的模式了,为什么还要面向切面的思想呢?
       面向对象的编程主要注重核心业务,而面向切面编程主要关注一些不是核心的业务,但又是必须的辅助功能,比如一个完整的系统中,记录平时系统运行时抛出的异常,需要我们去记录,以便我们对系统尽快的修复。这就是我们常用的日志。如果对一些要求比较重要的数据操作,事务是不可少的,如金融系统,这样的数据很重要,每步操作都很重要,我们就应该用到事务处理。这就是我们常用的事务处理。可根据你的系统数据的重要性,有选择的应用。还用一个常用的就是安全验证了,它也是常用的,对于不同的页面,访问的身份也不一样。这就是我们常用的身份验证。对于我们系统部分页面或模块的访问量比较大的地方,我们可以使用缓存的机制来对付这些访问比较频繁的页面,以弥补性能上的不住,保证性能不受影响,这就要用到缓存机制了。以上这些不是针对特定那个业务模块的,可能针对所有的模块。它们只是一些附加的功能,相对模块的主功能而言。如果在每个模块中都夹杂着这些不是核心业务的代码,看起来与核心业务有点关系,但这样处理,会对以后的维护比较头疼。同时也违背了面向对象的一条原则,自己对自己负责。本不属于这个方法的业务也放在了其中。这样的代码不仅难维护,重用性也不好,耦合度也比较大。内聚性也比较低。这样的代码眼前可能不会有什么麻烦,但给后期的维护人员带来了麻烦。
      面向方面的编程主要是辅助核心业务的,它并不是核心业务,但它又是不可缺少的。我们可以这样理解它与面向对象思想的联合使用。其实面向方面编程就是把那些夹杂在核心业务方法里面的代码抽取出来并模块化,把它们单独看成一个模块功能.来与核心业务共同完成比较完善的功能.
    面向方面编程( Aspect-Oriented Programming,AOP)很早就出现了,它与spring的Ioc结合使用,更加体现了aop的强大功能所在.在讲它与spring结合使用之前先说几个难听,难懂的概念.它为什么不命名一些容易理解的概念了,因为aop很早就有人对它们命名了, 所以spring中讲的aop也不例外.在jboss,AspectJ...中都有aop这个概念.概念都一样的.看你怎样理解和运用了.我们简单的讲一下常用的几个概念.
   第一个: 切面(Aspect),这是中文的翻译,你可以把它翻译成方面,一部分...关于它的翻译太多,我们不关注这些,我们知道理解它是核心功能就OK了.切面简单的理解就是把那些不是核心业务应该处理的代码提取出来,进行封装成模块化.来处理那些附加的功能代码.(如日志,事务,安全验证)我们把这个模块的作用理解为一个切面,告诉我们它是一个功能模块.我们可以把它看成一个切面.说白了就是我们写一个类,在这个类中写一些处理在核心业务中起到同样效果的方法.这样大家应该明白了吧.专业的概念就是那么难理解.
 第二个:连接点(Joinpoint),简单的理解就是在切面模块中定义的方法.就是上面定义类中的方法.
 第三个:切入点(Pointcut).就是连接点的集合,就是一组方法的集合了.
 第四个:通知(Advice).简单的理解就是告诉一个方法什么时间触发执行.把它看作一个条件判断.判断这个方法何时执行.
 以下几个就比较理解了,目标对象就是要处理的核心业务了.代理就更容易理解了,让一个代理去完成这个任务.
 今天先简单的写到这,以后在写. 









本文转自 weijie@java 51CTO博客,原文链接:http://blog.51cto.com/weijie/66471,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
设计模式 SQL 运维
面向切面:AOP(1)
面向切面:AOP(1)
49 2
面向切面:AOP(1)
|
2月前
|
Java 数据库连接 应用服务中间件
Spring5源码(39)-Aop事物管理简介及编程式事物实现
Spring5源码(39)-Aop事物管理简介及编程式事物实现
24 0
|
3月前
|
XML 设计模式 SQL
Spring6 面向切面(AOP)
Spring6 面向切面(AOP)
|
5月前
|
Java Spring
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
52 0
|
6月前
|
前端开发 Java 数据库连接
Spring Aop:面向切面编程
Spring Aop:面向切面编程
37 0
|
3月前
|
XML Java 数据格式
Spring 的AOP 简介,面向切面编程AOP
Spring 的AOP 简介,面向切面编程AOP
63 0
|
3月前
|
XML Java 数据格式
spring之面向切面:AOP(2)
【1月更文挑战第15天】 一、基于注解的AOP 1、技术说明 2、准备工作 3、创建切面类并配置 4、各种通知 5、切入点表达式语法 6、重用切入点表达式 7、获取通知的相关信息 8、环绕通知 9、切面的优先级 二、基于XML的AOP 1、准备工作 2、实现
66 2
|
3月前
|
设计模式 SQL 缓存
spring之面向切面:AOP(1)
【1月更文挑战第15天】 一、场景模拟 1、声明接口 2、创建实现类 3、创建带日志功能的实现类 4、提出问题 二、代理模式 1、概念 2、静态代理 3、动态代理 4、测试 三、AOP概念及相关术语 1、概述 2、相关术语 ①横切关注点 ②通知(增强) ③切面 ④目标 ⑤代理 ⑥连接点 ⑦切入点 3、作用
91 2
|
4月前
|
存储 Java 数据库
spring核心技术(下)--面向切面aop的特点加案例论证
spring核心技术(下)--面向切面aop的特点加案例论证
|
5月前
|
Java Maven Spring
AOP切面编程
AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。
51 0