欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring AOP切面编程简介

程序员文章站 2022-05-21 09:20:10
...

AOP 编程思想简介

  使用AOP ,可以将处理某些与程序功能无关但又是必须的代码注入主程序,
  如异常处理、日志、安全、事务等。

  Spring AOP 是一种非侵略性的、轻型的AOP 框架。无需使用预编译或其他的元标签,
  便可以在Java程序中使用它,大大简化了AOP 的开发的复杂度,也降低了AOP 的开发难度。,


   AOP.适应原则:关注点分离原则(separation of concerns)


AOP 的关键概念:
Pointcut / Advice / Advisor

* Pointcut(切入点) :
连接点指的程序运行中的某个阶段点,如方法的调用,异常的抛出等。

* Advice(通知):
Advice 是某个连接点所采用的处理逻辑,也就是向连接点注入的代码。

* Advisor(通知器)
通知器 将切入点和通知配置器 ,它包括Pointcut 和 Advice,将Advice注入到
Pointcut位置代码;

AOP 实现的原理:

静态代理
代理类
动态代理

提示:相关代理请下载demo查看:


比较:
动态代理与普通代理相比较,最大的好处是接口中声明的所有方法都
被转移到一个集中的方法中处理(invoke),这样,在接口方法数量比较多的时候,
我们可以灵活处理,而不需要像静态代理那样每个方法进行中转。

注意:
动态代理类只能代理接口,代理类都需要实现InvocationHandler类,实现invoke方法。
该方法就是调用被代理接口所有方法时需要调用的,而invoke方法返回的值是被代理接口的
一个实现类;


Spring 中的切入点:
动态切入点:
动态切入点和静态切入点的区别于,它不仅要考虑给定的方法和类这些静态信息,
还要考虑方法参数,由于参数的变化性,他们必须每次方法调用的时候都被计算,并且不能缓存结果,因此动态切入点的计算代价比静态切入点高的多;

自定义切入点:
为Spring 中的切入点是JAVA类,而不是语言特性,因此可以定义无论是静态还是动态的自定义切入点,但由于AOP 还没有完全成熟,所以Spring在这个方法还不是很强大;


-->