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

时间:2017-07-18 23:17:51

标签: spring-mvc spring-mvc-initbinders

在线查看docs以及@InitBinder的几个示例,我从未将这些方法标记为static。我的IDE声称它们可以标记为static,我这样做时没有看到任何错误,从概念上讲,我认为你可以这样标记它。

这样做有什么缺点吗?我知道该方法不能返回值。

1 个答案:

答案 0 :(得分:1)

Spring Web中处理@InitBinder注释的代码没有任何内容 假设或要求是否是静态的。

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

如果您不需要实例变量或方法,则可以安全地将@InitBinder方法设为静态,也可以设置为私有。

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