SpringAOP中通过JoinPoint获取参数名和值

SpringAOP中通过JoinPoint获取参数名和值

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

public void tet(JoinPoint joinPoint) {
        // 下面两个数组中,参数值和参数名的个数和位置是一一对应的。
        Object[] args = joinPoint.getArgs(); // 参数值
        String[] argNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames(); // 参数名
}

注意:

IDEA 只有设置了 Java 编译参数才能获取到参数信息。并且jdk要在1.8及以上版本。
SpringAOP中通过JoinPoint获取参数名和值_第1张图片

Maven中开启的办法

增加compilerArgs 参数

 <plugins>
     <plugin>
         <groupId>org.apache.maven.pluginsgroupId>
         <artifactId>maven-compiler-pluginartifactId>
         <version>${maven_compiler_plugin_version}version>
         <configuration>
             <source>${java_source_version}source>
             <target>${java_target_version}target>
             <encoding>${file_encoding}encoding>
             <compilerArgs>
                 <arg>-parametersarg>
             compilerArgs>
         configuration>
     plugin>
plugins>

Eclipse中开启的办法

Preferences->java->Compiler下勾选Store information about method parameters选项。
这样在使用eclipse编译java文件的时候就会将参数名称编译到class文件中。

你可能感兴趣的:(spring)