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