栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AOP中的JoinPoint、ProceedingJoinPoint

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AOP中的JoinPoint、ProceedingJoinPoint

1.JoinPoint
@AfterReturning("execution(* com..*.*Mapper.update*(..))|| execution(* com..*.*Mapper.insert*(..))"
			+ " || execution(* com..*.*Mapper.add*(..))")
	public int afterAddAndUpdate(JoinPoint joinPoint){
		try {
			String declaringTypeName = joinPoint.getSignature().getDeclaringTypeName(); //1拦截方法所在类名
			String methodName = joinPoint.getSignature().getName(); //2获取拦截到的方法名称
			Object[] args = joinPoint.getArgs();//3获取参数值
			String[] argNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames();//参数名称
			......
			......
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 1;
	}

前面三个方法就是拿来就用,没什么问题,这个String[] argNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames();需要注意的是,编译的时候需要用特殊的编译方式,才能获取到参数的名称,否则argNames=null,使用会报空指针异常;

在Java8之前,代码编译为class文件后,方法参数的类型固定,但是方法名称会丢失,方法名称会变成arg0、arg1….在Java8开始可以在class文件中保留参数名。

特殊编译的几种方式:
1.maven pom.xml 增加compilerArgs ,编译时使用maven compile


     
         org.apache.maven.plugins
         maven-compiler-plugin
         3.1
         
             1.8
             1.8
             UTF-8
             
                 -parameters
             
         
     

2.IDEA中设置
File–>Setting–>Java Compiler

3.eclipse中设置
window–>preferences->java->compiler下,选中Store information about method parameters

2.ProceedingJoinPoint

ProceedingJoinPoint是JoinPoint的子接口,用在@Around切面方法中,增加了proceed()方法

Object proceed() throws Throwable //执行目标方法 
Object proceed(Object[] var1) throws Throwable //传入的新的参数去执行目标方法 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号