AOP全称 aspect-priented programming 它是面向切面编程的思想核心java
AOp和OOP即面向对象的编程语言,不相冲突,他们是两个相辅相成的实际模型express
Spring的同期并不依赖与AOP编程
AOP术语介绍编程语言
cross-cutting concern:系统层面上的服务穿插到业务逻辑的处理流程之中对象
aspect:当须要是,将其放到应用程序上,不须要是将其从应用程序总脱力出来接口
Advice:是Aspect具体的实现get
Joinpoint:aspect在应用程序执行时加入业务流程的时机io
Pointcut:指定某个aspect在那些joinpoint时被穿插至应用程序之上编译
Target:一个advice被应用的对象或者目标对象jdk
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/>