Spring mvc之ParameterNameDiscoverer接口

1. 定义

接口来发现方法和构造函数的参数名。
参数名发现并不总是可能的,但是可以尝试各种策略,例如查找可能在编译时发出的调试信息,以及查找可选的伴随AspectJ注释方法的argname注释值。

接口定义如下:

public interface ParameterNameDiscoverer {

    @Nullable
    String[] getParameterNames(Method method);

    @Nullable
    String[] getParameterNames(Constructor ctor);
}

从接口中声明的方法可以知道,这是两个重载方法,只是方法的参数类型的不同。

1.1 getParameterNames(Method method)方法

返回方法的参数名,如果无法确定,则返回null。

如果参数名仅对给定方法的某些参数可用,而对其他参数不可用,则数组中的单个条目可能为空。但是,建议在可行的情况下改用存根参数名。

1.2 getParameterNames(Constructor ctor)方法

返回构造函数的参数名,如果无法确定,则返回null。

如果参数名仅适用于给定构造函数的某些参数,而不适用于其他参数,则数组中的单个条目可能为空。但是,建议在可行的情况下改用存根参数名。

2. 实现类

Spring mvc之ParameterNameDiscoverer接口_第1张图片
image.png

除图中的实现类外,还有AbstractAspectJAdvisorFactory的内部类AspectJAnnotationParameterNameDiscoverer和LocalVariableTableParameterNameDiscoverer类。

你可能感兴趣的:(Spring mvc之ParameterNameDiscoverer接口)