AOP
一段已有的类程序
要求要在方法执行前或后加一段日志保存的记录
在面向对象设计的时候:
1、直接在原有的类中添加一个方法log()
2、继承关系
但是缺点:对已有代码做了“代码入侵”
面向切面编程:
不会对原有代码做改动,而在执行的过程中,会增加执行的内容
AOP采取横向抽取机制,即将分散在各个方法中的重复代码提取出来,然后在程序编译或运行阶段,再将这些抽取出来的代码应用到需要执行的地方。
特点:
- 是一种编程范式,不是编程语言
- 解决特定问题,不能解决所有问题
- 是OOP的补充,不是替代
使用AOP的好处:
- 集中处理某一关注点/横切逻辑
- 可以很方便的添加/删除关注点
- 侵入性少,增强代码可读性及可维护性
- 作用:在不修改源代码的情况下,可以实现功能的增强。
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 中,所有的方法执行都是连接点,而切入点是一个描述信息,它修饰的是连接点,通过切入点确定哪些连接点需要被处理。
切入点也是连接点,是所有连接点的一部分

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

被折叠的 条评论
为什么被折叠?



