用@InitBinder 注释的方法可以标记为静态吗?
Can a method annotated with @InitBinder be marked as static?
看网上的docs和@InitBinder
的几个例子,我从来没有看到这些方法被标记为static
。我的 IDE 声称可以将它们标记为 static
,这样做时我没有看到任何错误,从概念上讲,我认为您可以这样标记它。
这样做有什么缺点吗?我知道该方法不能 return 一个值。
SpringWeb里面处理@InitBinder
注解的代码没有做任何
假设或要求是否是静态的。
静态和非静态@InitBinder
方法的区别归结为静态和非静态方法的标准Java语义,这意味着对非静态变量的访问和覆盖的能力方法。
如果您不需要实例变量或方法,您可以安全地使 @InitBinder
方法成为静态的,并且也是私有的。
无论 @InitBinder
方法是否静态,它 每个请求都可以多次调用 ,比如每个 @PathVariable
至少调用一次,请求处理方法的@RequestParam
、@RequestHeader
或@CookieValue
参数。您可以使用 WebDataBinder#getObjectName()
检查绑定到 WebDataBinder
对象的目标,并根据该信息自定义活页夹配置。
看网上的docs和@InitBinder
的几个例子,我从来没有看到这些方法被标记为static
。我的 IDE 声称可以将它们标记为 static
,这样做时我没有看到任何错误,从概念上讲,我认为您可以这样标记它。
这样做有什么缺点吗?我知道该方法不能 return 一个值。
SpringWeb里面处理@InitBinder
注解的代码没有做任何
假设或要求是否是静态的。
静态和非静态@InitBinder
方法的区别归结为静态和非静态方法的标准Java语义,这意味着对非静态变量的访问和覆盖的能力方法。
如果您不需要实例变量或方法,您可以安全地使 @InitBinder
方法成为静态的,并且也是私有的。
无论 @InitBinder
方法是否静态,它 每个请求都可以多次调用 ,比如每个 @PathVariable
至少调用一次,请求处理方法的@RequestParam
、@RequestHeader
或@CookieValue
参数。您可以使用 WebDataBinder#getObjectName()
检查绑定到 WebDataBinder
对象的目标,并根据该信息自定义活页夹配置。