Spring AOP之切入点Pointcut API详细介绍及使用

Spring AOP之切入点Pointcut API详细介绍及使用,在工作中用的最多的就是通过@Aspect实现AOP功能;要在Spring配置中使用@Aspect切面,需要启用Spring支持,以便基于@Aspect切面配置Spring AOP,并根据条件自动代理bean。通过自动代理,如果Spring确定某个bean符合一个或多个切面的建议,它会自动为该bean生成一个代理来拦截方法调用,并确保按需运行通知。,可以通过XML或java风格的配置启用@AspectJ支持。在这两种情况下,还需要确保AspectJ的aspectjweaver.jar库位于应用程序的类路径上(版本1.8或更高)。,通过注解方式开启@Aspect支持,通过XML开启@Aspect支持。,定义AspectJ切面。,上面简单回顾了在工作中使用@Aspect定义切面实现AOP功能。,Spring的切入点模型支持独立于通知类型的切入点重用。可以使用相同的切入点定位不同的通知。,pointcut接口是中心接口,用于为特定类和方法提供建议。完整的接口如下:,将切入点接口拆分为两个部分允许重用类和方法匹配部分以及细粒度的组合操作。,ClassFilter接口用于将切入点限制为给定的目标类集。如果matches()方法总是返回true,则匹配所有目标类。ClassFilter接口的定义如下列代码清单所示:,该类专门用来匹配每一个Bean是否符合条件,只有匹配了才可为其创建代理。,MethodMatcher接口通常更重要。完整的接口如下:,Spring支持切入点上的操作(特别是union和intersection)。Union表示任意一个切入点匹配的方法。交集意味着两个切入点匹配的方法。Union通常更有用。可以使用org.springframework.aop.support.Pointcuts类中的静态方法来组合切入点,也可以使用同一个包中的 ComposablePointcut类。然而,使用AspectJ切入点表达式通常是一种更简单的方法。,Union表示了多个Pointcut都需要匹配才算匹配。,如上假设返回ClassFilterAwareUnionMethodMatcher。,Spring为我们提供了几个便捷的切入点实现类可以直接使用。,静态切入点,静态切入点基于方法和目标类,不能考虑方法的参数。对于大多数用法,静态切入点就足够了,而且是最好的。Spring只能在方法第一次被调用时对静态切入点进行一次评估。之后,就不需要对每个方法调用再次评估切入点了。,使用JdkRegexpMethodPointcut类,可以提供一组模式字符串。如果其中任何一个匹配,切入点计算为true。,动态切入点的评估成本比静态切入点高。它们既考虑了方法参数,也考虑了静态信息。这意味着每次方法调用都必须计算它们,而且结果不能缓存,因为参数不同。,核心切入点类:ControlFlowPointcut​。,Spring提供了有用的切入点超类来帮助您实现自己的切入点。,因为静态切入点最有用,你可能应该子类化StaticMethodMatcherPointcut。这只需要实现一个抽象方法(尽管你可以覆盖其他方法来定制行为)。下面的例子展示了如何子类化StaticMethodMatcherPointcut:

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/19243.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月5日 上午12:00
下一篇 2023年3月7日 下午10:34