面向切面设计:AOP

本文详细介绍了面向切面编程(AOP)的概念,包括切面、连接点、切入点、通知等核心术语,并通过JDK动态代理和Cglib代理的方式展示了AOP的实现过程。此外,还探讨了Spring框架中基于代理的AOP实现及其四种通知类型,如环绕、前置、后置返回和异常通知。

AOP

一段已有的类程序

要求要在方法执行前或后加一段日志保存的记录

在面向对象设计的时候:

1、直接在原有的类中添加一个方法log()

2、继承关系

但是缺点:对已有代码做了“代码入侵”

面向切面编程:

不会对原有代码做改动,而在执行的过程中,会增加执行的内容

AOP采取横向抽取机制,即将分散在各个方法中的重复代码提取出来,然后在程序编译或运行阶段,再将这些抽取出来的代码应用到需要执行的地方。

特点:

  1. 是一种编程范式,不是编程语言
  2. 解决特定问题,不能解决所有问题
  3. 是OOP的补充,不是替代

使用AOP的好处:

  1. 集中处理某一关注点/横切逻辑
  2. 可以很方便的添加/删除关注点
  3. 侵入性少,增强代码可读性及可维护性
  4. 作用:在不修改源代码的情况下,可以实现功能的增强。

AOP术语

切面

切面(Aspect)是指封装横切到系统功能(如事务处理)的类。

public class Aspect_jdk {
	public void check() {
		System.out.println("模拟权限控制");
	}
	public void log() {
		System.out.println("模拟日志记录");
	}
	public void gb() {
		System.out.println("模拟结束进程");
	}
}

连接点(切面类中的所有的方法)

连接点(Joinpoint)是指程序运行中的一些时间点,如方法的调用或异常的抛出。

如上面的check(),log()……连接点都是可以去执行的

切入点(某些方法)

切入点(Pointcut)是指那些需要处理的连接点。在Spring AOP 中,所有的方法执行都是连接点,而切入点是一个描述信息,它修饰的是连接点,通过切入点确定哪些连接点需要被处理。

切入点也是连接点,是所有连接点的一部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值