对切向编程(AOP)的理解

传统上,当我们写业务逻辑处理代码,我们通常会做几件事的习惯:日志记录、事务控制和权限控制,然后编写核心业务逻辑处理代码,代码写的回来了,却发现成功的几百行代码,真正的核心业务逻辑只有那么几行,如图6-4.method化合物的方法,显示类复杂,这样的无奈与遗憾度过春天和秋天的数量。如果是项目结束的时候,如果我们需要在访问控制的一个大变化,数以千计的方式将被再次调用。



如果我们可以提取在图6-4许多方法常见的代码,把它们放在一定的地方和管理集中,然后动态地运行这些常用代码放入容器在操作的具体时间,至少,我们可以解决两个问题。

当java EE程序员编写具体的业务逻辑的处理方法,他们只需要关心的核心业务逻辑处理,不仅提高了工作效率,而且使更改代码简洁优雅。

在维护后的几天内,由于业务逻辑代码和公共代码分开存储,并存储了总的代码,因此维护工作简单而容易。

面向面向方面编程的AOP技术正是为了解决这个问题而诞生的。剖面剖面。如图6-5所示,它代表的是一种常见的功能,例如,日志部分,栏目权限和事务部。



接下来,我们把用户的AOP实现过程管理的业务逻辑组件的用户服务(见图6-6)为例,深入分析technology.aop AOP技术的实现原理是基于java语言的动态代理机制的反思。在操作过程中的业务逻辑组件,AOP容器将动态创建一个用户代理对象调用代理对象,java EE根据程序员的角度将成功切入连接点到目标的方法,以便在同一时间段的业务逻辑功能和执行功能。原则上,调用者直接调用代理对象所产生的动态AOP容器,和然后,代理对象调用目标对象完成原始业务逻辑处理,代理对象合成了节和业务逻辑方法。

一些参与图的概念现在解释如下。

看点:事实上,它是常见的功能的实现,如日志切割面,当局削减,交易节等等。在实际应用中,它通常是一个普通的java类,商店常用的功能,它可以通过AOP容器切向确定的,这是在配置中指定。

通知(advice):它是切线的具体实现方法,以目标为参照点,根据地点的不同,可分为5个部分:前通知(前),后(随后通知),通知(afterthrowing除外),最后的通知(后)和通知通知(左右)。在实际应用中,它通常是在节段的方法,这也正是通知的类型,这也是在配置中指定。

连接点(Joinpoint):就是程序可以插入切术。例如,方法调用,异常抛出,或现场修改,但春天只支持方法级的连接点。

切入点(pointcut):它是用来定义连接点应切成不同的通知。通知通常需要切割成不同的连接点,而这个精确匹配的正则表达式定义的切入点。

目标对象(目标)是要切入到切线的对象,也就是被通知的对象,所有这些对象都只有一个干净的核心业务逻辑代码,所有常见的函数代码都等待AOP容器切入。

代理对象(代理):一个对象是动态通知后应用到目标对象创建的。它可以简单的理解,代理对象的功能等于目标加普通功能的核心业务逻辑功能。代理对象对用户是透明的,是产品的程序运行。

编织:将切割面目标对象来创建一个新的代理对象的过程。这一过程可以在编译期间发生的,类装载期和运行期,当然不同的发生点有不同的前提条件。例如,在编译时,需要一种特殊的编译器支持AOP实施;在类加载期,需要一种特殊的装载机支持AOP实现;只发生在运行期间,反射机制可以直接通过java语言实现动态和动态代理机制。

以下是补编:

AOP是面向方面编程的简称,称为面向面编程,它通过预编译模式和运行周期动态代理实现程序功能的统一维护。

AOP和OOP是不同领域的两种设计思想。

面向对象编程(OOP)抽象和封装实体及其属性和行为,以获得更清晰、更高效的逻辑单元。

AOP用于在业务流程中提取人脸。它在加工过程中面临一定的步骤或阶段,以便在逻辑过程中获得不同部件之间的隔离效果。

我们可以从上面简单地理解AOP和OOP的话,我们不能使用下面的理解:

面向对象程序设计实际上是对封装对象的属性和行为,而这方面是不可能的,但AOP是一步阶段,部分提取的,也就是说,如果几个或更多的逻辑运算过程,重复行为,AOP可以通过动态代理提取,统一规划功能的维护,所以可能是太微妙,如果涉及到权限判断日志记录,可以理解。如果我们用面向对象程序设计简单,你怎么判断呢每个操作之前是否添加权限日志记录是怎么做的在每个方法的开始、结束和异常中手动添加日志所有,如果你使用AOP,你可以使用代理来做这些重复的操作,并且可以减少逻辑过程中各部分之间的耦合。两Yangchangbuduan,彼此最好的。

下面是对AOP的一些概念的详细理解:

方面(方面):可用于横切多个对象的模块化重点。事务管理是J2EE应用程序中横切关注点的一个很好的例子。

Joinpoint:在一个程序的执行一个明确的点,如调用方法或特定的异常被抛出。

Notification (Advice): the action performed by the AOP framework at a specific connection point.Various types of notifications include around, before, and throws notifications.The notification type will be discussed below.Many AOP frameworks, including Spring, serve as an interceptor as a notification model, and maintain an interceptor chain around the connection point.

切入点:指定一组连接点,将由一个通知触发。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。

引言(绪论):添加一个方法或字段的类可以通知。春天可以是任何对象,通知新界面的介绍。例如,你可以使用一个介绍使任何对象实现了改进的界面来简化缓存。

目标对象(目标对象):包含连接点的对象,也称为通知对象或代理对象。

AOP代理(AOP代理):由AOP框架包含创建的通知对象。在施普灵河,AOP代理可以JDK动态代理或者CGLIB代理。

编织:组件创建一个通知对象。这可以在编译时(例如,使用AspectJ编译器),它可以在运行时进行。春天,像其他的纯java的AOP框架,完成织造时。

在施普灵河中,AOP代理由Spring的IOC容器生成和管理,它的依赖项也由IOC容器管理。至于Spring的AOP是如何在项目中实现的,下一个博客将以日志为例学习。