当前位置:网站首页>@GetMapping、@PostMapping 和 @RequestMapping详细区别附实战代码(全)
@GetMapping、@PostMapping 和 @RequestMapping详细区别附实战代码(全)
2022-07-06 12:51:00 【码农研究僧】
前言
时常对这几个注解比较混乱,甚至只是模糊的认知
今天就梳理一下这个知识点
总的来说@GetMapping
等于@RequestMapping(method = RequestMethod.GET)
@PostMapping
等于@RequestMapping(method = RequestMethod.POST)
更加深层次的理解可看如下
1. 源码解析
理解一个函数功能或者注解原理,需要了解深层次的代码才能加深认知
@GetMapping
的源码如下:
@Target({
ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
method = {
RequestMethod.GET}
)
public @interface GetMapping {
@AliasFor(
annotation = RequestMapping.class
)
String name() default "";
@AliasFor(
annotation = RequestMapping.class
)
String[] value() default {
};
@AliasFor(
annotation = RequestMapping.class
)
String[] path() default {
};
@AliasFor(
annotation = RequestMapping.class
)
String[] params() default {
};
@AliasFor(
annotation = RequestMapping.class
)
String[] headers() default {
};
@AliasFor(
annotation = RequestMapping.class
)
String[] consumes() default {
};
@AliasFor(
annotation = RequestMapping.class
)
String[] produces() default {
};
}
通过如上代码可看到注解上面又引用了一些注解
- 使用@Documented标注了,在生成javadoc的时候就会把@Documented注解给显示出来,但其实也没啥用处,一个标识而已
- @Retention作用是定义被它所注解的注解保留多久,RetentionPolicy.RUNTIME注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
- @Target 作用于方法中
对于这些,在我之前的文章中也讲过:java函数式接口@FunctionalInterface的详细解析(供参考)
最重要的一个注解表明:
@RequestMapping(
method = {
RequestMethod.GET}
)
同样查看@PostMapping
的注解源码
@Target({
ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
method = {
RequestMethod.POST}
)
public @interface PostMapping {
@AliasFor(
annotation = RequestMapping.class
)
String name() default "";
@AliasFor(
annotation = RequestMapping.class
)
String[] value() default {
};
//省略定义代码,具体如@GetMapping所示
}
注解大致都相同定义,唯一的不同点在于
@RequestMapping(
method = {
RequestMethod.POST}
)
同样查看@RequestMapping
的注解源码
@Target({
ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {
};
@AliasFor("value")
String[] path() default {
};
RequestMethod[] method() default {
};
String[] params() default {
};
String[] headers() default {
};
String[] consumes() default {
};
String[] produces() default {
};
}
通过定义Mapping的注解以及 RequestMethod[] method() default {};
的定义去指定method是什么方法
2. 实战讲解
注解的使用方法简化如下:
@RequestMapping(value=”/manongyanjiuseng/{
id}”,method= RequestMethod.GET)
对于实战代码可结合Restful
可看我之前这篇文章,比较全面(此处不加赘述)
RESTFul从入门到精通超全解析(全)
3. 总结
在Spring4.3版本之后引入了@GetMapping、@PostMapping 、 @PutMapping、@DeleteMapping等注解来简化HTTP方法的映射
具体通过查询搜索的时候可以使用Get获取,交互式可以使用Post获取(上传、订单以及更新订阅信息等)
边栏推荐
- Interviewer: what is the internal implementation of ordered collection in redis?
- HMS core machine learning service creates a new "sound" state of simultaneous interpreting translation, and AI makes international exchanges smoother
- for循环中break与continue的区别——break-完全结束循环 & continue-终止本次循环
- C language operators
- Taylor series fast Fourier transform (FFT)
- OAI 5G NR+USRP B210安装搭建
- 基于STM32单片机设计的红外测温仪(带人脸检测)
- Reviewer dis's whole research direction is not just reviewing my manuscript. What should I do?
- @PathVariable
- [DSP] [Part 1] start DSP learning
猜你喜欢
OAI 5g nr+usrp b210 installation and construction
SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
MLP (multilayer perceptron neural network) is a multilayer fully connected neural network model.
拼多多败诉,砍价始终差0.9%一案宣判;微信内测同一手机号可注册两个账号功能;2022年度菲尔兹奖公布|极客头条
Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache
Spark SQL chasing Wife Series (initial understanding)
知识图谱构建流程步骤详解
Infrared thermometer based on STM32 single chip microcomputer (with face detection)
【OpenCV 例程200篇】220.对图像进行马赛克处理
1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效
随机推荐
知识图谱之实体对齐二
Minimum cut edge set of undirected graph
1_ Introduction to go language
What key progress has been made in deep learning in 2021?
js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 & az排序
【mysql】游标的基本使用
use. Net analysis Net talent challenge participation
Word bag model and TF-IDF
SAP UI5 框架的 manifest.json
for循环中break与continue的区别——break-完全结束循环 & continue-终止本次循环
Statistical inference: maximum likelihood estimation, Bayesian estimation and variance deviation decomposition
【OpenCV 例程200篇】220.对图像进行马赛克处理
Comment faire une radio personnalisée
Huawei device command
C # use Oracle stored procedure to obtain result set instance
ICML 2022 | Flowformer: 任务通用的线性复杂度Transformer
Interviewer: what is the internal implementation of ordered collection in redis?
Infrared thermometer based on STM32 single chip microcomputer (with face detection)
How to implement common frameworks
审稿人dis整个研究方向已经不仅仅是在审我的稿子了怎么办?