JobPlus知识库 IT 软件开发 文章
Spring注解

1,@RequestBody  、 @ResponseBody

概念
1,Http请求和响应报文本质上都是一串字符串 2,java将报文封装成I/O流,从流中读取以及写入原始字符 3,HttpMessageConverter(消息转换器)提供了转换,(read方法)请求报文-->@RequestBody注解的对象 (write方法)@ResponseBody注解对象-->响应报文 4,spring提供了请求报文的抽象,HttpInputMessage(Represents an HTTP input message,consisting of headers and a readable body)以及响应报文的抽象 HttpOutputMessage(Represents an HTTP output message, consisting of headers and a writable body)。 5,RequestResponseBodyMethodProcessor,处理@RequestBody注解的方法参数以及@ResponseBody方法注解的返回值。 6,HttpInputMessage和可以从servlet标准的HttpServletRequest构造,HttpOutputMessage可以从HttpServletResponse构造。

1)Request消息结构

POST /course/jzcf3e875d82d147449f3271219c0ad4b0/modifyInfo   HTTP/1.1              //请求行
  //请求头
Connection: keep-alive
//空行
type=3&price=0.02              //请求体

  1. Response消息结构

HTTP/1.1 200 OK //响应行
Server: nginx//响应头
Date: Wed, 17 May 2017 18:15:17 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
//空行
{"uptoken":"123","success":true} //响应体

使用@RequestBody,指定一个方法的参数绑定到一个web请求的body。
参数传递的时候,需要增加Content-type的请求头。
eg:设置  Header参数    Content-Type    application/json

Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型
使用@RequestBody接受的参数是不会被Servlet转化统一放在request对象的Param参数集中,@RequestParam是可以的。

2,@bean @component

1)每个Spring Bean都有作用域,默认情况Spring应用上下文中的Bean都是单例对象,也就是说,无论给某个Bean被多少次装配给其他Bean,都是同一个实例,即Spring Bean默认的作用域为Singleton。
2)一个对象没有状态并且能够在应用中重复使用,就可以使用Singleton模式。
3)要对Bean的作用域进行配置,在使用@Component或@Bean标注的同时使用@Scope标注。


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
202人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序