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在这个方法还不是很强大;
-->
上一篇: Spring 中动态代理