aop

AOP全称 aspect-priented programming 它是面向切面编程的思想核心

AOp和OOP即面向对象的编程语言,不相冲突,他们是两个相辅相成的实际模型

Spring的同期并不依赖与AOP

AOP术语介绍

cross-cutting concern:系统层面上的服务穿插到业务逻辑的处理流程之中

aspect:当需要是,将其放到应用程序上,不需要是将其从应用程序总脱力出来

Advice:是Aspect具体的实现

Joinpoint:aspect在应用程序执行时加入业务流程的时机

Pointcut:指定某个aspect在那些joinpoint时被穿插至应用程序之上

Target:一个advice被应用的对象或者目标对象

Instruction:为己编写,编译完成的类,在执行时期动态加入一些方法,而不用修改或者增加任何代码

Weave:被应用对象之上的过程

Spring对AOP的支持

纯java语言来编写  定义pointcuts可以使用配置文件   不支持属性成员的jointpoints

Spring创建Adivice

Before Advice

目标对象的方法执行之前被调用

通过创建类实现methodBeforeAdvice接口来实现

目标对象的方法执行之后被调用

通过创建类实现methodAfterAdvice接口来实现

Aound Advice在执行之前和之后来执行响应的操作

要实现MethodInterceptor接口

ThorowAdvice

异常发生的时候,通知某个服务对象做处理

实现ThrowsAdvice

基于XMLSchema

简化代码实现

容易对应用程序进行维护

所有元素都定义在<aop:config>标签元素中

<aop:config> 包含多个切面,切入点,advice等标签元素

<aop:aspect>定义一个切面

<aop:pointcut>定义切入点的信息 

expression执行的表达式 *字符,代表匹配任意的返回类

():匹配了一个不接受任何参数的方法

(..):匹配了接受任意参数的方法

<aop:around>定义around advice

基于Annotation

以注解的方式对java的普通类进行标注

@AspectJ采用jdk5.0的注解技术

在配置文件中启用AspectJ <aop:aspecrj-autoproxy/>

原文地址:https://www.cnblogs.com/wanghongjie/p/4883178.html