Spring mvc之ParameterNameDiscover

2021-04-14  本文已影响0人  engineer_tang

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. 实现类

image.png

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

上一篇 下一篇

猜你喜欢

热点阅读