`
raymond.chen
  • 浏览: 1426286 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring AOP使用整理:常用的Pointcut和PointcutAdvisor

 
阅读更多

Spring常用的PointcutAdvisor

        NameMatchMethodPointcutAdvisor

        RegexpMethodPointcutAdvisor

        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;
}

 



 



 

 

  • 大小: 86.3 KB
  • 大小: 81 KB
分享到:
评论

相关推荐

    手写springAop框架3.zip

    在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇,其中AOP(面向切面编程)模块更是它的一大亮点。本文将深入探讨如何手写一个简单的Spring AOP框架,理解其背后的原理与实现机制。 一、AOP概念与作用...

    spring代码课堂笔记

    PointCutAdvisor:可以灵活的指定当前接口下的哪一个实现类中哪一个方法与次要业务 进行绑定 Advice PointCut (次要业务) (目标对象和目标方法) ClassFilter MethodMatcher (判断当前被拦截对象是不是当前...

    springaop:spring aop应用实例和源码解析

    1. `ProxyFactoryBean`和`JdkDynamicAopProxy`:Spring AOP默认使用JDK动态代理来创建代理对象,`ProxyFactoryBean`用于生成代理对象,`JdkDynamicAopProxy`则负责具体代理逻辑的实现。 2. `...

    spring-aop-ProxyFactoryBean 源码分析

    在Spring AOP中,拦截器是`MethodInterceptor`接口的实现,而顾问是`Advisor`接口的实现,包括`PointcutAdvisor`(包含切点和拦截器)和`IntroductionAdvisor`(引入新的接口)。`ProxyFactoryBean`可以通过`...

    spring 要点总结

    - Spring 提供了 `org.springframework.aop.Pointcut` 接口来定义切入点,可以基于类名和方法名来匹配执行点,可以是静态的也可以是动态的,动态匹配会考虑方法参数。 5. **ProxyFactoryBean**: - 用于创建代理...

    开源框架 Spring Gossip

    Before Advice After Advice Around Advice Throw Advice Pointcut、Advisor Pointcut 定义了 Advice 的应用时机,在 Spring 中,使用 PointcutAdvisor 将 Pointcut 与 Advice 结合成为一个...

    spring 的自动代理

    总的来说,Spring 自动代理配置通过 `DefaultAdvisorAutoProxyCreator` 和相关的 PointcutAdvisor 实现了对业务代码的透明增强。这使得我们可以灵活地插入横切关注点,提高代码的可维护性和可扩展性,而无需直接修改...

    Spring-Source-Notes:Spring原始深度解析笔记-源码解析

    - `Advisor`接口和它的实现(如`PointcutAdvisor`和`BeforeAdvice`)封装了切点表达式和通知逻辑,`Pointcut`定义了何时应用通知,`JoinPoint`提供了运行时切入点的信息。 3. **源码分析过程**: - 使用IDEA进行...

    Spring @Async 的使用与实现的示例代码

    Spring @Async 的使用与实现示例代码 ...Spring @Async 的使用和实现机制是通过 AsyncAnnotationAdvisor 和 AsyncAnnotationBeanPostProcessor 来实现的,后者使用 PointcutAdvisor 和 Advisor 机制来实现异步处理。

    SPRING API 2.0.CHM

    All Classes ...AopContext AopInvocationException AopNamespaceHandler AopNamespaceUtils AopProxy AopProxyFactory AopProxyUtils AopUtils ApplicationContext ApplicationContextAware ...

Global site tag (gtag.js) - Google Analytics