Spring常用的PointcutAdvisor
NameMatchMethodPointcutAdvisorRegexpMethodPointcutAdvisor
AspectJExpressionPointcutAdvisor
DefaultPointcutAdvisor
Spring常用的Pointcut
NameMatchMethodPointcut
JdkRegexpMethodPointcut
AspectJExpressionPointcut
AnnotationMatchingPointcut
ComposablePointcut
1、DefaultPointcutAdvisor 顾问
@Bean public DefaultPointcutAdvisor getDefaultPointcutAdvisor() { DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(); //基于注解类的方法拦截 advisor.setPointcut(new AnnotationMatchingPointcut(null, Log.class)); advisor.setAdvice(new CustomMethodInterceptor()); // NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut(); // pointcut.addMethodName("show2"); // JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut(); // pointcut.setPattern(".*show2.*"); // AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); // pointcut.setExpression("execution(* com.seasy..*Impl.*(..))"); return advisor; }
2、RegexpMethodPointcutAdvisor 顾问
@Bean public RegexpMethodPointcutAdvisor getRegexpMethodPointcutAdvisor() { //基于正则表达式的方法拦截 RegexpMethodPointcutAdvisor advisor = new RegexpMethodPointcutAdvisor(); advisor.setPattern(".*show2.*"); advisor.setAdvice(new CustomMethodInterceptor()); return advisor; }
3、NameMatchMethodPointcutAdvisor 顾问
@Bean public NameMatchMethodPointcutAdvisor getNameMatchMethodPointcutAdvisor() { //基于方法名的方法拦截 NameMatchMethodPointcutAdvisor advisor = new NameMatchMethodPointcutAdvisor(); advisor.addMethodName("show2"); advisor.setAdvice(new CustomMethodInterceptor()); return advisor; }
4、AspectJExpressionPointcutAdvisor 顾问
@Bean public AspectJExpressionPointcutAdvisor getAspectJExpressionPointcutAdvisor() { //基于切点语言的方法拦截 AspectJExpressionPointcutAdvisor advisor = new AspectJExpressionPointcutAdvisor(); advisor.setExpression("execution(* com.seasy..*Impl.*(..))"); advisor.setAdvice(new CustomMethodInterceptor()); return advisor; }
5、ComposablePointcut 切入点
@Bean public DefaultPointcutAdvisor getComposablePointcutAdvisor() { DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(); //组合切入点 //union:并集, intersection:交集 ComposablePointcut pointcut = new ComposablePointcut(ClassFilter.TRUE, new StaticMethodMatcher() { @Override public boolean matches(Method method, Class<?> targetClass) { return method.getName().equals("show"); } }); pointcut.union(new StaticMethodMatcher() { @Override public boolean matches(Method method, Class<?> targetClass) { return method.getName().equals("show3"); } }); advisor.setPointcut(pointcut); advisor.setAdvice(new CustomMethodInterceptor()); return advisor; }
相关推荐
标题中的“API 线索图”可能意味着本文将通过一种图解的方式,即流程图或者类图的形式,来阐述Spring AOP的编程思想和API的使用。 描述中,“小马哥讲 Spring AOP 编程思想”表明这是由一位专家小马哥讲解的内容,...
在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇,其中AOP(面向切面编程)模块更是它的一大亮点。本文将深入探讨如何手写一个简单的Spring AOP框架,理解其背后的原理与实现机制。 一、AOP概念与作用...
PointCutAdvisor:可以灵活的指定当前接口下的哪一个实现类中哪一个方法与次要业务 进行绑定 Advice PointCut (次要业务) (目标对象和目标方法) ClassFilter MethodMatcher (判断当前被拦截对象是不是当前...
1. `ProxyFactoryBean`和`JdkDynamicAopProxy`:Spring AOP默认使用JDK动态代理来创建代理对象,`ProxyFactoryBean`用于生成代理对象,`JdkDynamicAopProxy`则负责具体代理逻辑的实现。 2. `...
在Spring AOP中,拦截器是`MethodInterceptor`接口的实现,而顾问是`Advisor`接口的实现,包括`PointcutAdvisor`(包含切点和拦截器)和`IntroductionAdvisor`(引入新的接口)。`ProxyFactoryBean`可以通过`...
6. **AOP代理**:Spring AOP使用动态代理技术来实现AOP,主要通过`ProxyFactoryBean`来创建代理对象。它可以配置`proxyInterfaces`和`interceptorNames`来指定代理接口和拦截器。 7. **Pointcut**:定义了哪些连接...
- Spring 提供了 `org.springframework.aop.Pointcut` 接口来定义切入点,可以基于类名和方法名来匹配执行点,可以是静态的也可以是动态的,动态匹配会考虑方法参数。 5. **ProxyFactoryBean**: - 用于创建代理...
Before Advice After Advice Around Advice Throw Advice Pointcut、Advisor Pointcut 定义了 Advice 的应用时机,在 Spring 中,使用 PointcutAdvisor 将 Pointcut 与 Advice 结合成为一个...
总的来说,Spring 自动代理配置通过 `DefaultAdvisorAutoProxyCreator` 和相关的 PointcutAdvisor 实现了对业务代码的透明增强。这使得我们可以灵活地插入横切关注点,提高代码的可维护性和可扩展性,而无需直接修改...
- `Advisor`接口和它的实现(如`PointcutAdvisor`和`BeforeAdvice`)封装了切点表达式和通知逻辑,`Pointcut`定义了何时应用通知,`JoinPoint`提供了运行时切入点的信息。 3. **源码分析过程**: - 使用IDEA进行...
Spring @Async 的使用与实现示例代码 ...Spring @Async 的使用和实现机制是通过 AsyncAnnotationAdvisor 和 AsyncAnnotationBeanPostProcessor 来实现的,后者使用 PointcutAdvisor 和 Advisor 机制来实现异步处理。
All Classes ...AopContext AopInvocationException AopNamespaceHandler AopNamespaceUtils AopProxy AopProxyFactory AopProxyUtils AopUtils ApplicationContext ApplicationContextAware ...