可以使用@InitBinder注解的方法标记为静态吗?

问题描述:

看着docs@InitBinder在线的几个例子,我从来没有看到这些方法标记为static。我的IDE声称他们可以标记为static,我在这样做时看不到任何错误,从概念上讲,我认为您可以用这种方式标记它。可以使用@InitBinder注解的方法标记为静态吗?

这样做有什么缺点吗?我明白这个方法不能返回一个值。

处理@InitBinder注释的Spring Web中的代码不会使任何 假设或要求(无论它是否为静态)。

静态和非静态@InitBinder方法之间的区别归结为静态和非静态方法的标准Java语义,即对非静态变量的访问以及覆盖该方法的能力。

如果您不需要实例变量或方法,您可以安全地使@InitBinder方法成为静态的,也是私有的。

不管是否@InitBinder方法静态或不是,它可以称作每个请求多次,如至少一次该请求的处理方法的各@PathVariable@RequestParam@RequestHeader@CookieValue参数。您可以使用WebDataBinder#getObjectName()检查绑定到WebDataBinder对象的目标,并根据该信息自定义绑定器配置。