Spring @initBinder方法只能在控制器内调用一次

时间:2015-11-28 10:27:27

标签: java spring spring-mvc propertyeditor spring-mvc-initbinders

我有一个用@RestController@ControllerAdvice注释的类,它有我的请求映射方法(@RequestMapping)。同样在这个类中,我添加了一个方法public void initBinder(WebDataBinder dataBinder),该方法用@InitBinder注释并负责注册一些自定义编辑器。 具体来说,它是一个propertyEditor,它将String转换为Enum。

我注意到在我的控制器中每次调用@RequestMapping方法时,都会调用我的initBinder方法。因为在我看来这个编辑器注册只应该发生一次(控制器的初始化),我希望它只被设置(调用)一次。

有办法吗?

1 个答案:

答案 0 :(得分:0)

或者,您可以使用BindingInitializer的实现来注册自定义编辑器。您必须在应用程序上下文文件中定义类“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter”的bean,并使用您的BindingInitializer实现设置其“webBindingInitializer”属性。

在任何情况下,WebDataBinder的范围都是针对请求的。希望这会有所帮助。