可以使用@InitBinder注解的方法标记为静态吗?
问题描述:
看着docs和@InitBinder
在线的几个例子,我从来没有看到这些方法标记为static
。我的IDE声称他们可以标记为static
,我在这样做时看不到任何错误,从概念上讲,我认为您可以用这种方式标记它。可以使用@InitBinder注解的方法标记为静态吗?
这样做有什么缺点吗?我明白这个方法不能返回一个值。
答
处理@InitBinder
注释的Spring Web中的代码不会使任何 假设或要求(无论它是否为静态)。
静态和非静态@InitBinder
方法之间的区别归结为静态和非静态方法的标准Java语义,即对非静态变量的访问以及覆盖该方法的能力。
如果您不需要实例变量或方法,您可以安全地使@InitBinder
方法成为静态的,也是私有的。
不管是否@InitBinder
方法静态或不是,它可以称作每个请求多次,如至少一次该请求的处理方法的各@PathVariable
,@RequestParam
,@RequestHeader
或@CookieValue
参数。您可以使用WebDataBinder#getObjectName()
检查绑定到WebDataBinder
对象的目标,并根据该信息自定义绑定器配置。