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/>