Spring服务注解有哪些

 更新时间:2016年11月14日 16:00:18   作者:zhougl996  
这篇文章主要介绍了Spring服务注解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
@RequestMapping(value ="/xxx",method = RequestMethod.GET)
@GetMapping,@PostMapping,@PutMapping,@DeleteMapping为@RequestMapping缩写

1. @GetMapping

对应注解

@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)

作用:对应查询,获得数据,表明是一个查询请求

2. @PostMapping

对应注解

@RequestMapping(value = “/add/user”,method = RequestMethod.POST)

作用:对应添加,添加数据,表明是一个添加请求

3. @PutMapping

对应注解

@RequestMapping(value = “/modify/user”,method = RequestMethod.PUT)

作用:对应更新,更新数据,表明是一个更新请求

4. @DeleteMapping

对应注解

@RequestMapping(value = “/del/{id}”,method = RequestMethod.DELETE)

作用:对应删除,删除数据,表明是一个删除请求

5.@PathVariable

用于处理路径参数: /list/{id}

常用于Get,Delete

可以匹配正则表达式 例如:{id: [a-zA-Z0-9]+} 不符合正则会报404

@RequestMapping("/list/{id}")
public xxx list(@PathVariable String id){
    return xxx;
}
// 或者
@RequestMapping("/list/{id}")
public xxx list(@PathVariable("id") String id){
    return xxx;
}

6. @RequestParam

用于处理请求头内的元素:Content-Type 

常用于Get,Delete

可加可不加:不加则 /list或/list?id=xxx都能访问成功服务;

加上需要required默认为true必须用/list?id=xxx,设置required为false则于不加一样

@RequestMapping("/list")
public xxx list(String id){
    return xxx;
}
// 两者效果一样
@RequestMapping("/list")
public xxx list(@RequestParam(value="id",required=false) String id){
    return xxx;
}
  • value:请求参数名;
  • required:是否必需,默认为 true; true 标识必须带参数例如:/list?id=xxx;反之则为/list
  • defaultValue:默认值,设置该值,required 将自动设为 false,不传则值为defaultValue设置的默认值

7.@RequestBody

用于处理请求体中的内容: application/json,application/xml

常用于:Post,Put

加上RequestBody后会自动转换成map,list,实体类等

传参的方式,对应以上三种注解:

  • 路径参数: /list/{id} 
  • 请求头:/list?id=xxx
  • 请求体: json或xml

@RequestParam和@PathVariable相同点和区别

相同点:

  • 根据用户输入不同获取不同服务

不同点:

PathVariable:

  • 路径传值:/list/{name}/file/{id} => /list/user1/file/123; /list/user2/file/223

必须传值

  • 多用于:当URL指向的是某一具体业务资源(或资源列表),例如博客,用户时

RequestParam:

  • 请求头传值/list?id=xxx
  • 可以通过required选择传不传
  • 可以通过defaultValue设置默认值

多用于:当URL需要对资源或者资源列表进行过滤,筛选时

8.RequestBody和RequestParam分别支持的类型

在 Spring MVC 中,`@RequestBody` 和 `@RequestParam` 注解都可以用于接收请求参数,但是它们所支持的参数类型有所不同。

`@RequestBody` 注解不支持简单类型参数的接收,它可以将请求体中的数据以快捷的方式绑定到 Java 对象或对象集合上。

需要注意的是,`@RequestBody` 默认只能接收 Content-Type 为 application/json 的请求体,但是您可以通过配置更改为接收其他类型的请求体

例如 application/xml、application/x-www-form-urlencoded 等。

常见数据类型:

  • JSONObject,List<String>, Map<String, String>,Java对象
  • JSON 格式的请求体:将请求体转为 Java 对象
  • XML 格式的请求体:将请求体转为 Java 对象
  • application/x-www-form-urlencoded 格式的请求体:将请求体转为一个 Map<String, String> 对象

`@RequestParam` 注解则用于接收 URL 查询字符串中的参数,或者表单中的参数,它支持简单类型参数的接收

例如 String、int、double 等基本类型,同时也支持自定义类型的转换。

常见数据类型:

  • String:接收一个字符串参数
  • 基本类型:int、long、float、double、short、boolean 等
  • 封装类型:Integer、Long、Float、Double、Short、Boolean 等
  • 日期类型:java.util.Date、java.time.Instant、java.time.LocalDate、java.time.LocalDateTime 等
  • 文件类型:MultipartFile、Part 等

总之

当您需要处理请求体中的数据时,使用 `@RequestBody` 注解;当您需要处理 URL 中的查询字符串或表单数据时,使用 `@RequestParam` 注解。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MyBatis ofType和javaType的区别说明

    MyBatis ofType和javaType的区别说明

    这篇文章主要介绍了MyBatis ofType和javaType的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java实战案例之用户注册并发送邮件激活/发送邮件验证码

    java实战案例之用户注册并发送邮件激活/发送邮件验证码

    现在很多的网站都提供有用户注册功能,当我们注册成功之后就会收到封注册网站的邮件,邮件里包含了我们的注册的用户名和密码及激活账户的超链接等信息,这篇文章主要给大家介绍了关于java实战案例之用户注册并发送邮件激活/发送邮件验证码的相关资料,需要的朋友可以参考下
    2021-09-09
  • 从Springboot项目中下载文件的具体过程

    从Springboot项目中下载文件的具体过程

    最近在做一个临时的项目,APP端在检测到程序有更新时,需要去后台下载新的安装包,接下来通过本文给大家分享从Springboot项目中下载文件的具体过程,感兴趣的朋友一起看看吧
    2021-07-07
  • SpringBoot中处理日期的两种方式小结

    SpringBoot中处理日期的两种方式小结

    本文主要介绍了SpringBoot中处理日期的两种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 通过实例解析Spring组合注解与元注解

    通过实例解析Spring组合注解与元注解

    这篇文章主要介绍了通过实例解析Spring组合注解与元注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java使用字节流复制文件的方法

    Java使用字节流复制文件的方法

    这篇文章主要为大家详细介绍了Java使用字节流复制文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • SpringMVC中DispatcherServlet的HandlerMapping详解

    SpringMVC中DispatcherServlet的HandlerMapping详解

    这篇文章主要介绍了SpringMVC中DispatcherServlet的HandlerMapping详解,上回说的Handler,我们说是处理特定请求的,也就是说,不是所有的请求都能处理,那么问题来了,我们怎知道哪个请求是由哪个Handler处理的呢,需要的朋友可以参考下
    2023-10-10
  • 浅谈JAVA工作流的优雅实现方式

    浅谈JAVA工作流的优雅实现方式

    这篇文章主要介绍了浅谈JAVA工作流的优雅实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • spring @Lazy延迟注入的逻辑实现

    spring @Lazy延迟注入的逻辑实现

    有时候我们会在属性注入的时候添加@Lazy注解实现延迟注入,今天咱们通过阅读源码来分析下原因,感兴趣的可以了解一下
    2021-08-08
  • SpringBoot 微信退款功能的示例代码

    SpringBoot 微信退款功能的示例代码

    这篇文章主要介绍了SpringBoot 微信退款功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论