交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
springmvc第4- demo- 1:ControllerAdvice注解
分享
未结
0
910
李延
LV6
2021-05-25
悬赏:20积分
# 内容 在springmvc第4 章:HandlerAdapter中,有很多的注解和组件,如果没有示例很难理解其作用,所以在这一章中,对于HandlerAdapter重要内容的测试用例。 本章为ControllerAdvice注解的说明。 # 功能 通过ControllerAdvice 注解,可以实现3种功能 1. 全局异常处理 //TODO 没遇见。后面分析 2. 全局数据绑定 3. 全局数据预处理 ## 全局数据绑定 需要配合ModelAttribute来使用 全局数据绑定功能可以用来做一些初始化的数据操作,我们可以将一些公共的数据定义在添加了 @ControllerAdvice 注解的类中,这样,在每一个 Controller 的接口中,就都能够访问导致这些数据。 用例: ```java @ControllerAdvice public class MyGlobalExceptionHandler { @ModelAttribute(name = "md") public Map<String,Object> mydata() { HashMap<String, Object> map = new HashMap<>(); map.put("age", 99); map.put("gender", "男"); return map; } } ``` 定义完成后,在任何一个Controller 的接口中,都可以获取到这里定义的数据: ```java @RestController public class HelloController { @GetMapping("/hello") public String hello(Model model) { Map<String, Object> map = model.asMap(); System.out.println(map); return "hello controller advice"; } } ```  我们看到刚才添加的map数据在model对象内。 参考[https://www.cnblogs.com/lenve/p/10748453.html](https://www.cnblogs.com/lenve/p/10748453.html) ## 全局数据预处理 需要配合InitBinder来使用 我们可以通过InitBinder注册一个时间解析器,解析MM-dd-yyyy ```java @InitBinder public void initBinder(WebDataBinder binder){ binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("MM-dd-yyyy"),false)); } ``` 我们在cotroller中写一个接收Date参数的方法 ```java @GetMapping("/InitBinder") public String initBinderTest(@RequestParam Date date) { System.out.println(date); return "hello controller advice"; } ``` 发送请求:http://127.0.0.1:8080/InitBinder?date=01-11-2019  我们发现之间可以对MM-dd-yyyy格式进行解析。
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号