在spring aop中的拦截多个方法的execution表达式怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在spring aop中的拦截多个方法的execution表达式怎么写相关的知识,希望对你有一定的参考价值。

比如execution(* com.news.service.impl.*.*(..))
左边的第一个*表示返回值,*代表任意类型
*.*:
第一个*是类名,表示com.news.service.impl包下的任意类
,第2个*表示该类中的任意方法
(..)表示方法的可变参数列表。
execution(* com.news.service.impl.*.*(..)的含义是切入点pointcut为com.news.service.impl包下所有类的所有方法都是切入点。

如果是execution( void com.news.service.impl.A.*(..)),这时的切入点为com.news.service.impl包下类A所有没有返回值的方法。
参考技术A expression="execution(* com.clouddrive.baseManage.service.impl..*.*(..)) " 改一下这里啊

Spring AOP 是不是可以拦截 线程内部调用的拦截方法?

比如:aop拦截say()方法,在thread里面调用这个方法,是否可以拦截

参考技术A 创建拦截类:
@Aspect
public class MyAspect

/** 执行前拦截 */
@Before("execution(* t.t..service.*Service.*(..))")
public void before(JoinPoint point) throws Throwable
System.out.println("执行方法:" + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName());


/** 执行后拦截 */
@After("execution(* t.t..service.*Service.*(..))")
public void after(JoinPoint point) throws Throwable
System.out.println("执行完成:" + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName());
追问

你说的那个是正常情况下当然可以拦截了,这个和问的不是一个问题,问的是线程里面调用say()方法,在aop配置拦截的也是say(),是否可以拦截,如果可以,有什么好的方式

以上是关于在spring aop中的拦截多个方法的execution表达式怎么写的主要内容,如果未能解决你的问题,请参考以下文章

Spring AOP不拦截从对象内部调用的方法

Spring AOP不拦截从对象内部调用的方法原因

Spring AOP不拦截从对象内部调用的方法原因

Spring AOP不拦截从对象内部调用的方法原因

spring中的aop实现各个类方法的日志拦截

Spring aop注解方式怎么获得执行了目标的某个方法?