Spring注解

作者: 沐兮_d64c | 来源:发表于2017-05-18 02:17 被阅读65次

    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 //请求行
    Host: www.shequnke.com //请求头
    Connection: keep-alive
    //空行
    type=3&price=0.02 //请求体

    2)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} //响应体

    3)

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

    4)

    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标注。

    3,@AutoWire和@Resource注解

    1)@Autowired 根据bean 类型从spring 上线文中进行查找,@Resource 允许通过bean 名称或bean 类型两种方式进行查找。
    2)@Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,Spring会将Value所有类型的Bean注入进来。key为bean的id或者name。
    eg:

    @Autowired
    private Map<String, CollectWorker> collectWorkerMap0;//注入所有CollectWorker类型的对象。
    

    3)@Autowired标注BeanFactory、ApplicationContext、ResourceLoader、ApplicationEventPublisher、MessageSource等,会自动注入这些实现类的实例。

    相关文章

      网友评论

        本文标题:Spring注解

        本文链接:https://www.haomeiwen.com/subject/xmijxxtx.html