1. 13 10月, 2018 2 次提交
  2. 12 10月, 2018 13 次提交
  3. 11 10月, 2018 9 次提交
    • B
      Handle special headers in Tomcat and Jetty · 10d5de7d
      Brian Clozel 提交于
      This commit adds special processing of some HTTP response headers in
      Jetty and Tomcat; they both consider some headers like  "Content-Length"
      as specific and require explicit calls on the `HttpServletResponse`
      itself on top of setting the HTTP response header.
      
      Issue: SPR-17250
      10d5de7d
    • A
      Set BEST_MATCHING_HANDLER_ATTRIBUTE in WebFlux.fn · 8de5c05a
      Arjen Poutsma 提交于
      SPR-17367
      8de5c05a
    • B
      Avoid copying in DefaultServerHttpRequestBuilder · f12c28e4
      Brian Clozel 提交于
      This commit avoids copying HTTP headers when mutating an HTTP request.
      Instead, we're now unwrapping the `ReadOnlyHttpHeaders` (which is most
      likely backed by the native request headers).
      
      Issue: SPR-17250
      f12c28e4
    • B
      Optimize HTTP headers management · ce7278aa
      Brian Clozel 提交于
      Several benchmarks underlined a few hotspots for CPU and GC pressure in
      the Spring Framework codebase:
      
      1. `org.springframework.util.MimeType.<init>(String, String, Map)`
      2. `org.springframework.util.LinkedCaseInsensitiveMap.convertKey(String)`
      
      Both are linked with HTTP request headers parsing and response headers
      writin during the exchange processing phase.
      
      1) is linked to repeated calls to `HttpHeaders.getContentType`
      within a single request handling. The media type parsing operation
      is expensive and the result doesn't change between calls, since
      the request headers are immutable at that point.
      
      This commit improves this by caching the parsed `MediaType` for the
      `"Content-Type"` request header in the `ReadOnlyHttpHeaders` class.
      This change is available for both Spring MVC and Spring WebFlux.
      
      2) is linked to insertions/lookups in the `LinkedCaseInsensitiveMap`,
      which is the data structure behind `HttpHeaders`.
      Those operations are creating a lot of garbage (including a lot of
      `String` created by `toLowerCase`). We could choose a more efficient
      data structure for storing HTTP headers data.
      
      As a first step, this commit is focusing on Spring WebFlux and
      introduces `MultiValueMap` implementations mapped by native HTTP headers
      for the following servers: Tomcat, Jetty, Netty and Undertow.
      Such implementations avoid unnecessary copying of the headers
      and leverages as much as possible optimized operations provided by the
      native implementations.
      
      This change has a few consequences:
      
      * `HttpHeaders` can now wrap a `MultiValueMap` directly
      * The default constructor of `HttpHeaders` is still backed by a
      `LinkedCaseInsensitiveMap`
      * The HTTP request headers for the websocket HTTP handshake now need to
      be cloned, because native headers are likely to be pooled/recycled by
      the server implementation, hence gone when the initial HTTP exchange is
      done
      
      Issue: SPR-17250
      ce7278aa
    • V
      Updated Javadoc: date format patterns SPR-17366 · 61403e3b
      volkovandr 提交于
      61403e3b
    • B
      Upgrade to Reactor Californium SNAPSHOTs · cc172bce
      Brian Clozel 提交于
      Preparing for Californium-SR1
      cc172bce
    • J
      Upgrade to Mockito 2.23 · e1814987
      Juergen Hoeller 提交于
      Includes JSON-P 1.1.3.
      e1814987
    • J
      Restore original factory method caching (addressing Boot regressions) · c89e3e6e
      Juergen Hoeller 提交于
      Issue: SPR-17358
      c89e3e6e
    • R
      Refactor FilterWebHandler and DefaultWebFilterChain · d0592416
      Rossen Stoyanchev 提交于
      The chain is initialized once and re-used vs creating the "next" chains
      on every request.
      d0592416
  4. 10 10月, 2018 16 次提交