帕提古丽·托合提,中国尚义,板报内容
在上篇中,我们从写死代码,到使用代理;从编程式 spring aop 到声明式 spring aop。一切都朝着简单实用主义的方向在发展。沿着 spring aop 的方向,rod johnson(老罗)花了不少心思,都是为了让我们使用 spring 框架时不会感受到麻烦,但事实却并非如此。那么,后来老罗究竟对 spring aop 做了哪些改进呢?
现在继续!
之前谈到的 aop 框架其实可以将它理解为一个拦截器框架,但这个拦截器似乎非常武断。比如说,如果它拦截了一个类,那么它就拦截了这个类中所有的方法。类似地,当我们在使用动态代理的时候,其实也遇到了这个问题。需要在代码中对所拦截的方法名加以判断,才能过滤出我们需要拦截的方法,想想这种做法确实不太优雅。在大量的真实项目中,似乎我们只需要拦截特定的方法就行了,没必要拦截所有的方法。于是,老罗同志借助了 aop 的一个很重要的工具,advisor(切面),来解决这个问题。它也是 aop 中的核心!是我们关注的重点!
也就是说,我们可以通过切面,将增强类与拦截匹配条件组合在一起,然后将这个切面配置到 proxyfactory 中,从而生成代理。
这里提到这个“拦截匹配条件”在 aop 中就叫做 pointcut(切点),其实说白了就是一个基于表达式的拦截条件罢了。
归纳一下,advisor(切面)封装了 advice(增强)与 pointcut(切点 )。当您理解了这句话后,就往下看吧。
我在 greetingimpl 类中故意增加了两个方法,都以“good”开头。下面要做的就是拦截这两个新增的方法,而对 sayhello() 方法不作拦截。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
win10如何启用管理员账户 win10禁用/启用管理员账户的方法
win10怎么查看驱动是否异常 Win10检测驱动程序是否正常的方法
Windows10系统任务栏无效图标怎么删除 通过注册表一键快速删除
Win10系统自动重启怎么办 Win10系统自动重启的关闭方法
怎么减少win10笔记本功耗 详谈笔记本硬件功耗大的原因和解决办法
网友评论