AOP理解

AOP:(Aspect Oriented Programming)面向切面编程

通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等等

为什么AOP的主要功能是日志记录,性能统计,安全控制,事务处理,异常处理等等呢?下面就谈谈我的个人理解:

首先,如果多个类中出现相同的代码,应该考虑定义一个共同的抽象类,将这些相同的代码提取到抽象类中。比如Teacher,Student这些对象都有sleep()、eat()的方法,通过引入一个包含这两个方法抽象的People父类,Teacher、Student就可以通过继承People复用到sleep()和eat()的方法。通过引入父类消除多个类中重复代码的方式在大多情况下是可行的,但是世事无绝对。

如果我们需要日志记录,它在方法调用前启动,在方法调用返回前结束,并在内部记录结果信息。 我们无法通过抽象父类的方法来消除这样的日志记录代码。因为这些横切逻辑依附在业务类方法的流程中,它们不能转移到其他地方去。

AOP就是将分散在各个业务逻辑代码中的相同代码,通过横向切割的方式抽取到一个独立的模块中,还业务逻辑类一个清新的世界。 而且AOP,不仅仅是将这些逻辑独立出来,也要解决将这些独立的逻辑融合到业务逻辑中完成原来一样的业务操作。

所以AOP的主要意图为:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

时间: 2024-10-24 21:51:48

AOP理解的相关文章

IOC与AOP理解与实现

一.ioc理解: IoC,(Inverse of Control)控制反转,其包含两个内容:其一是控制,其二是反转.在程序中,被调用类的选择控制权从调用它的类中移除,转交给第三方裁决.这个第三方指的就是Spring的容器.IoC另解,依赖注入(Dependency Injection),调用类对被调用类的依赖关系由第三方注入,以移除调用类对被调用类的引用. 二.aop理解: aop,面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的

spring aop 理解

源地址:http://www.verydemo.com/demo_c143_i20837.html 1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难.当我看进去以后,我才发现:它就是一些Java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而已. 2.为什么用aop 1就是为了方便,看一个国外很有名的大师说,编程的人都是"懒人&qu

Spring AOP理解

Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean.这样可以实现对业务代码的最小化侵入.使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性.Spring中日志记录,性能统计,安全控制,事务处理等都是通过AOP来管理的. 伪装类的实

Spring学习记录(十二)---AOP理解

Spring核心之二:AOP(Aspect Oriented Programming) --- 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 专业术语: Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spri

spring ioc和aop理解

spring IOC 1.目的:就是解决程序间的依赖关系 2.原理:通过反射原理将我们控制层中的 dao层. service层类以工厂模式在static代码块中实现加载后存放入map中 , 并实现单列 . 原文地址:https://www.cnblogs.com/cwone/p/11939192.html

【Spring】---【AOP】

转发几篇文章 专治不会看源码的毛病--spring源码解析AOP篇 Spring3:AOP 理解AOP 什么是AOP? 转自: http://www.cnblogs.com/xiexj/p/7366890.html http://www.cnblogs.com/xrq730/p/4919025.html http://www.cnblogs.com/yanbincn/archive/2012/06/01/2530377.html http://www.cnblogs.com/zhugenqian

重温Spring之AOP

目录 AOP理解 术语 代理模式 概念 静态代理 动态代理 AOP原理 AOP理解 面向切面编程,是OOP面向对象编程的补充.将程序中交叉的业务逻辑代码提取出来,封装成切面,由AOP容器在适当的时机将封装的切面动态的织入到具体业务逻辑中. 术语 连接点 joinpoint 程序执行中某一特定位置,eg 方法调用前或后,方法抛出异常 切入点 pointcut 定位查找到需要的连接点,一个切点可以包含多个切入点 增强 Advice 也成为通知 在切点上执行的一段代码,用来实现某些功能 目标对象 ta

Struts2 源码分析——拦截器的机制

本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样子讲吧.拦截器的应用是sturts2核心的亮点之一.如果不明白拦截器是什么的话,那么你相当于没有学习过struts2.笔者本来想直接讲这一章的知识点.可是又怕读者可能对拦截器没有一个概念化的理解.为什么这么讲呢?struts2在设计拦截器这一个部分的内容.在笔者看来事实是以AOP为核心思想来设计的.

Spring回顾

1.IOC和DI IOC:Inversion of Control(控制反转)是一个重要的面对对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. IOC理解:将组件对象的控制权从代码本身转移到外部容器,简单来说就是将创建对象实例的控制权从代码控制剥离到IOC容器控制,也就是Spring容器 DI:Dependency Injection(依赖注入)是IOC思想的实现 DI理解:将代码创建对象实例的变成了容器创建,也就是在Spring配置文件里配置类属性,值;然后由容器