面向切面编程
将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
面向切面编程,是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术
核心关注点
横切关注点
在applicationContext.xml中引入schema文件
定义日志模块类,方法
###### spring-aspects-5.2.9.RELEASE.jar Spring ships with a small AspectJ aspect library,一个小型的AspectJ的库
编写配置文件
声明目标类(需要增强的类的方法)
配置切面
声明切入点
织入(指定增强方法bean的id,指明切入点,声明织入的方法类型及方法)
运行程序查看结果
修改日志类,在增强的方法中传入参数JoinPoint jp
如需获取增强的目标方法的返回值,就需要在后置增强中配置returning,指明返回信息的接收对象,然后在后置增强的方法中把接收对象传入进来
接着,再来看下运行结果
CGLib 面向类的代理,在运行过程中动态创建子类来进行代理,创建速度慢,执行速度快,会受到final修饰符限制,final修饰的方法和属性不能代理
Spring 会根据情况自动选择代理,如:
参考资料:
https://zhuanlan.zhihu.com/p/24565766
手机扫一扫
移动阅读更方便
你可能感兴趣的文章