Springframework-aop学习(二)之PointCut切入点

Spring中AOP就是使用代理模式来完成的,而因为代理有两种,一种是JDK代理需要有接口,一种字节码增强技术实现的代理Cglib。

因为都有各自使用的场景和有点,所以Spring中都实现,而如何选择呢?就是Spring的策略。 下面看这个代理图。

AopProxy是一个代理接口,实现就是Jdk动态代理和Cglib代理。而具体的选择就是AopProxyFactory代理工厂来实现的。

Springframework-aop学习(二)之PointCut切入点

AopProxyFactory代理工厂的定义很简单,获取代理类。具体实现是DefaultAopProxyFactory

Springframework-aop学习(二)之PointCut切入点

DefaultAopProxyFactory定义了生成代理类的策略。

如果有接口或者已经是JDK代理类就用JdkDynamicAopProxy动态代理,否则用ObjenesisCglibAopProxy代理

Springframework-aop学习(二)之PointCut切入点

以上就是Spring关于代理策略的问题.


这节我们主要讲Spring中AOP的PointCut切入点

首先我们还提出一个问题

什么是切点? 如何拦截这个切点。

Springframework-aop学习(二)之PointCut切入点

这就是一个切点,他可能是拦截一个注解,或者是拦截一个方法,或者是根据正则来拦截。

这些Spring中都有现成的实现。我们简单介绍下。先写将要被代理的类

Springframework-aop学习(二)之PointCut切入点

NameMatchMethodPointcutAdvisor

根据名字就知道是根据名字来拦截

Springframework-aop学习(二)之PointCut切入点

JdkRegexpMethodPointcut

根据正则来拦截

Springframework-aop学习(二)之PointCut切入点

AnnotationMatchingPointcut

根据注解来拦截

Springframework-aop学习(二)之PointCut切入点

Springframework-aop学习(二)之PointCut切入点


以上就是Pointcut切入点的知识,读完这篇要明白什么是切入点,其次要知道有哪些方法拦截,我们可以根据Spring的这些功能来轻松实现很多的代理功能。


分享到:


相關文章: