您的位置:首页 > 运维架构

AOP的基本概念

2012-02-15 21:16 204 查看
注意本文中的AOP概念指的是整个AOP中的概念,并非局限于Spring,当然大多都在Spring中有体现

一、什么是AOP 面向切面编程,加入了横切逻辑,对诸如权限管理、日志管理提供了更好的解决方案

二、AOP 的实现机制分为两类 静态AOP实现 和 动态 AOP实现

三、Java平台上得AOP实现机制

1、动态代理 —— Proxy InvacationHandler (spring中的主要实现机制)

2、动态字节码增强 —— CGLIB (spring中的主要实现机制,对未实现接口的类进行横切的机制)

3、java代码生成 —— 早期j2ee的实现

4、自定义类加载器 —— 加载类的时候做手脚改变字节码

5、AOL语言扩展 —— AspectJ

四、AOP的基本概念

1、JoinPoint 指可以插入横贴逻辑的地方

JoinPoint的类型 方法调用、方法执行、构造方法方法调用、构造方法方法执行、方法执行、字段设置、字段获取、异常处理、类初始化

spring只支持方法执行的JoinPoint

2、Pointcut 指Joinpoint的表达方式;对于一个系统来说可能会有成千上万个Joinpoint, 如此之多的Joinpoint如何描述?用Pointcut !

1>直接指定joinPoint所在的方法名称。

2>正则表达式

3>使用AspectJ表达语言

4>将Pointcut 进行集合运算

3、Advice 横贴逻辑 就是说你到底要干什么。

分为 Befor Advice 、AfterAdvice、Around Advice、Introduction

Befor Advice:Joinpoint指定位置之前执行

AfterAdvice:Joinpoint指定位置之后执行。

AfterAdvice又细分为After returning Advice(Joinpoint指定位置正常完成才执行)、After throwing Advice(Joinpoint指定位置抛出异常才执行)、After Advice(Joinpoint指定位置不论是否正常完都执行,spring中没有实现)

Around Advice:Joinpoint指定位置之前和之后都执行,甚至可以忽略原有逻辑,spring中没有直接定义对应接口,沿用AOP alliance的表中接口

Introduction:不同于以上各种按处理时机划分,Introduction可以为原有对象添加功能和特性

4、Aspect ——Pointcut 和 Advice 的组合,指明哪些地方(Pointcut )要加入哪些逻辑(Advice )Spring中最初没有完全明确的Aspect概念。Advisor代表Spring中的Aspect,与正常的Aspect不同,Advisor只能持有一个Pointcut和一个Advice,而理论上可以是多个。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息