SpringMVC — @InitBinder Date类型转换
这个注解被解析的时机,是匹配Controller的请求执行映射方法之前;同时@InitBinder标注的方法是执行多次的,每请求一次就执行一次。
当某个Controller上的第一次请求由SpringMvc前端控制器匹配到该Controller之后,根据Controller的class类型查找所有方法上标注了@InitBinder的方法,并且存入RequestMappingHandlerAdapter的 initBinderCache,下次请求执行对应业务方法之前时,可以走initBinderCache缓存,而不用再去解析@InitBinder;所以initBinder时Controller级别的,一个Controller实例中所有@initBinder只对该Controller有效。
功能
注册Controller级别的MVC属性编辑器
属性编辑器的功能就是将Web请求中的属性转成我们需要的类型。
@initBinder唯一的一个属性value,作用是限制对那些@RequestMapping方法起作用,具体筛选的条件就是通过@RequestMapping方法入参来筛选,默认不写,就代表对所有的@RequestMapping的方法起作用。
@InitBinder标注的方法, 方法入参和 @RequestMapping方法入参可选范围一样(这里指的是比如HttpServletRequest、ModelMap这些), 通常一个入参 WebDataBinder 就够我们使用了; @InitBinder标注的方法返回值, 必须为null,这里我理解的是运行期的返回值;如果运行时返回值不为null,抛出异常 “@InitBinder methods should return void:”,编译时IDEA会提示@InitBinder应该返回null,但是不影响编译通过;
1 |
|
上面是一个@InitBinder的简单用法 。