Spring Boot中实现自定义参数解析器(2)
导读:Spring,【步骤二】:创建application.yml server: port: 8899 【步骤三】:创建Tutorial @Datapublic class Tutorial implements Serializable { private Long id; private String title; private String descr
Spring
【步骤二】:创建application.yml
server:
port: 8899
【步骤三】:创建Tutorial
@Data
public class Tutorial implements Serializable {
private Long id;
private String title;
private String description;
private Integer published;
private static final long serialVersionUID = 1L;
}
【步骤四】:创建TutorialController
@RestController
public class TutorialController {
@PostMapping("/save")
//此处request对象就是通过Springmvc提供的参数解析器帮我们注入的
public String saveTutorial(HttpServletRequest request){
return "success";
}
@GetMapping("/tutorial")
public Tutorial getTutorial(Tutorial tutorial){
return tutorial;
}
}
【步骤五】:创建启动类
@SpringBootApplication
public class ParseMasterApplication {
public static void main(String[] args) {
SpringApplication.run(ParseMasterApplication.class,args);
}
}
此时可以启动项目并使用PostMan发送请求访问:http://localhost:8899/tutorial

可以发现虽然能够访问成功,但是Tutorial对象的属性都是空的。
【步骤六】:创建参数解析器类,需要实现HandlerMethodArgumentResolver接口
public class CurrentUserMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
//如果Controller的方法参数类型为Tutorial,则返回true
return parameter.getParameterType().equals(Tutorial.class);
}
//当supportsParameter方法返回true时执行此方法
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
System.out.println("参数解析器...");
Tutorial tutorial = new Tutorial();
tutorial.setPublished(1);
tutorial.setTitle("test");
tutorial.setDescription("test");
return tutorial;
}
}
【步骤七】:创建配置类,用于注册自定义参数解析器
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
public CurrentUserMethodArgumentResolver getCurrentUserMethodArgumentResolver(){
return new CurrentUserMethodArgumentResolver();
}
@Override
//注册自定义参数解析器
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(getCurrentUserMethodArgumentResolver());
}
}
重新启动项目访问,发现tutorial对象的属性已经有值了,这是因为在我们访问Controller的方法时Spring框架会调用我们自定义的参数解析器的
相关阅读
-
域名解析怎么弄 域名解析详细教程分享
小编为大家讲一讲域名解析怎么弄和域名解析详细教程分享的相关知识,接下来IT袋小编为大家介绍。 图文教程 域名解析 :是在域名解析平台上进行操作,把域名指向到虚拟主机(空间)的
-
html文档的基本结构是什么 html文档的基本结构包括哪些
为大家介绍html文档的基本结构是什么的相关经验,html文档的基本结构是文档类型声明、html 标签对、head 标签对、body 标签对。HTML的全称为超文本标记语言,是一种标记语言。
-
什么是5G承载网? 5G承载网有什么优势
全面的为大家介绍什么是5G承载网的话题,具体内容如下: 随着5G技术的逐渐普及和推广,人们对5G承载网的认识也越来越深刻。5G承载网作为5G网络的基础设施之一,对于实现5G网络的高速、高
-
设计一个简单的数据库 数据库零基础入门教学
本文为你详解设计一个简单的数据库和数据库零基础入门教学的IT知识,具体详情如下: 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的


