无意中打印了一下日志,发现每次执行一个请求,InitBinder注解的那个方法,会直接很多次,但请求的那个方法并未执行多次。
@ControllerAdvice
public class BaseController {
@InitBinder
protected void initBinder(ServletRequestDataBinder binder) throws Exception {
// 对于需要转换为Date类型的属性,使用DateEditor进行处理
binder.registerCustomEditor(Date.class, new DateEditor());
System.out.println("initBinder");
}
}
@Controller
@RequestMapping(value = "/comicController")
public class ComicController extends BaseController {
@Autowired
private BookService bookService;
@RequestMapping(value = "/getLatestList", method = RequestMethod.GET)
@ResponseBody
public ReturnResult getLatestList(ComicVO comicVO) {
return bookService.getLatestList(comicVO);
}
}
@ControllerAdvice 会拦截所有的Controller请求,如果你的应用不止一个Controller的话,你就会被触发多次。
而@InitBinder是针对Controller方法里所有参数的,你可以打断点看看每次进去这个initBinder的binder的值是什么。