首页 > 为什么使用ControllerAdvice注解的BaseController中的InitBinder注解方法会执行很多次

为什么使用ControllerAdvice注解的BaseController中的InitBinder注解方法会执行很多次

无意中打印了一下日志,发现每次执行一个请求,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的值是什么。

【热门文章】
【热门文章】