java - 为什么使用ControllerAdvice注解的BaseController中的InitBinder注解方法会执行很多次
大家讲道理
大家讲道理 2017-04-17 17:40:17
[Java讨论组]

无意中打印了一下日志,发现每次执行一个请求,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);
}

}

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
PHP中文网

@ControllerAdvice 会拦截所有的Controller请求,如果你的应用不止一个Controller的话,你就会被触发多次。
而@InitBinder是针对Controller方法里所有参数的,你可以打断点看看每次进去这个initBinder的binder的值是什么。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号