AOP的基本概念 (转)

注意本文中的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,而理论上可以是多个。

转载于:https://my.oschina.net/u/2339284/blog/394231

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值