成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Boot Web 應用性能優(yōu)化

happen / 2740人閱讀

摘要:默認情況下,應用會裝配一些功能組件。在大多數(shù)應用場景下,可以選擇性地關閉一下自動裝配的組件,以達到提升性能的目的。了解更多更多關于應用性能優(yōu)化內容,請參考微服務實戰(zhàn)系列課堂,其中將有系統(tǒng)和深入的討論。

默認情況下,Spring Boot Web 應用會裝配一些功能組件 Bean。

在大多數(shù) Web 應用場景下,可以選擇性地關閉一下自動裝配的Spring 組件 Bean,以達到提升性能的目的。

配置項優(yōu)化 Spring Boot Web 應用加速 完整配置項
management.add-application-context-header = false
spring.mvc.formcontent.putfilter.enabled = false

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,
org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,
org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,
org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,
org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,
org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,
org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,
org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,
org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,
org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,
org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,
org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration,
org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration,
org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration
配置項匯總
spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration,
org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration,
org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration
關閉 Web 請求跟蹤 自動裝配 org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration

顧名思義,該自動裝配用跟蹤 Web 請求,通過Servlet Filter org.springframework.boot.actuate.trace.WebRequestTraceFilter 記錄請求的信息(如:請求方法、請求頭以及請求路徑等),其計算的過程存在一定的開銷,使用場景罕見,故可選擇關閉。

配置項

spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration
org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration

org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration關閉后,其請求信息存儲介質org.springframework.boot.actuate.trace.TraceRepository沒有存在的必要,故可選擇關閉。

配置項

spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration
關閉 Web 請求結果指標 自動裝配 org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration

該組件將自動裝配org.springframework.boot.actuate.autoconfigure.MetricsFilter,該 Filter

主要記錄Web 請求結果指標(如:相應狀態(tài)碼、請求方法執(zhí)行時間等),該信息一定程度上與反向代理服務器(nginx)功能重疊,故可選擇關閉。

配置項

spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration
可關閉 Servlet Web 組件 org.springframework.web.filter.HttpPutFormContentFilter

引入版本

org.springframework.web.filter.HttpPutFormContentFilter 由 Spring
Framework 3.1 版本引入,分發(fā)在 org.springframework:spring-web 中。

使用場景

通常 Web 場景中,瀏覽器通過 HTTP GET 或者 POST 請求 提交 Form 數(shù)據(jù),而非瀏覽
器客戶端(如應用程序)可能通過 HTTP PUT 請求來實現(xiàn)。

當 HTTP 請求頭Content-Typeapplication/x-www-form-urlencoded
,F(xiàn)orm 數(shù)據(jù)被 encoded。而 Servlet 規(guī)范中, ServletRequest.getParameter*()
方法僅對 HTTP POST 方法支持請求參數(shù)的獲取,如:

public intetfacce ServletRequest {

    ......

    public String getParameter(String name);

    public Enumeration getParameterNames();

    public String[] getParameterValues(String name);

    public Map getParameterMap();

    ......

}

故 以上方法無法支持 HTTP PUT 或 HTTP PATCH 請求方法(請求頭Content-Type
application/x-www-form-urlencoded)。

org.springframework.web.filter.HttpPutFormContentFilter 正是這種場景的解
決方案。

Spring Boot 默認場景下,將
org.springframework.web.filter.HttpPutFormContentFilter
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 自動
裝配,以下為 Spring Boot 1.4.1.RELEASE 以及更好版本定義(可能存在一定的差異):

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
        WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
        ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {

    ......

    @Bean
    @ConditionalOnMissingBean(HttpPutFormContentFilter.class)
    @ConditionalOnProperty(prefix = "spring.mvc.formcontent.putfilter", name = "enabled", matchIfMissing = true)
    public OrderedHttpPutFormContentFilter httpPutFormContentFilter() {
        return new OrderedHttpPutFormContentFilter();
    }

    ......

}

綜上所述,org.springframework.web.filter.HttpPutFormContentFilter 在絕大
多數(shù) Web 使用場景下為非必須組件。

配置項

如果應用依賴 Spring Boot 版本 為 1.4.1.RELEASE 以及更高的版本,可通過如下配置,
進行將 org.springframework.web.filter.HttpPutFormContentFilter 關閉:

spring.mvc.formcontent.putfilter.enabled = false
org.springframework.web.filter.HiddenHttpMethodFilter

引入版本

org.springframework.web.filter.HiddenHttpMethodFilter 由 Spring
Framework 3.0 版本引入,分發(fā)在 org.springframework:spring-web 中。

使用場景

當 Web 服務端同一資源(URL)提供了多請求方法的實現(xiàn),例如 URI :/update 提供了
HTTP POST 以及 HTTP PUT 實現(xiàn)),通常 Web 場景中,瀏覽器僅支持 HTTP GET
或者 POST 請求方法,這樣的話,瀏覽器無法發(fā)起 HTTP PUT 請求。

為了瀏覽器可以消費 HTTP PUT 資源, 需要在服務端將 HTTP POST 轉化成
HTTP PUT 請求,為了解決這類問題,Spring 引入
org.springframework.web.filter.HiddenHttpMethodFilter Web 組件。

當瀏覽器 發(fā)起 HTTP POST 請求時,可通過增加請求參數(shù)(默認參數(shù)名稱:"_method")
的方式,進行HTTP 請求方法切換,
org.springframework.web.filter.HiddenHttpMethodFilter 獲取參數(shù)"_method"
值后,將參數(shù)值作為 HttpServletRequest#getMethod()的返回值,給后續(xù) Servlet
實現(xiàn)使用。

出于通用性的考慮,org.springframework.web.filter.HiddenHttpMethodFilter
通過調用 #setMethodParam(String) 方法,來修改轉換請求方法的參數(shù)名稱。

Spring Boot 默認場景下,將
org.springframework.web.filter.HttpPutFormContentFilter
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 自動
裝配,以下為 Spring Boot 1.4.1.RELEASE 以及更好版本定義(可能存在一定的差異):

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
        WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
        ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {

    ......

    @Bean
    @ConditionalOnMissingBean(HiddenHttpMethodFilter.class)
    public OrderedHiddenHttpMethodFilter hiddenHttpMethodFilter() {
        return new OrderedHiddenHttpMethodFilter();
    }

    ......

}

綜上所述,org.springframework.web.filter.HiddenHttpMethodFilter 也是特殊
場景下所需,故可以關閉之。

配置項

按目前最新的 Spring Boot 1.5.2.RELEASE 版本中實現(xiàn),也沒有提供類似
spring.mvc.formcontent.putfilter.enabled 這樣的配置項關閉,無法關閉。

了解更多?

更多關于 Spring Boot Web 應用性能優(yōu)化內容,請參考《Java 微服務實戰(zhàn)系列課堂》,其中將有系統(tǒng)和深入的討論。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/76482.html

相關文章

  • 【推薦】最新200篇:技術文章整理

    摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復實現(xiàn)故障恢復自動化詳解哨兵技術查漏補缺最易錯過的技術要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...

    BicycleWarrior 評論0 收藏0
  • 【推薦】最新200篇:技術文章整理

    摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復實現(xiàn)故障恢復自動化詳解哨兵技術查漏補缺最易錯過的技術要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...

    tommego 評論0 收藏0
  • Spring Security

    摘要:框架具有輕便,開源的優(yōu)點,所以本譯見構建用戶管理微服務五使用令牌和來實現(xiàn)身份驗證往期譯見系列文章在賬號分享中持續(xù)連載,敬請查看在往期譯見系列的文章中,我們已經(jīng)建立了業(yè)務邏輯數(shù)據(jù)訪問層和前端控制器但是忽略了對身份進行驗證。 重拾后端之Spring Boot(四):使用JWT和Spring Security保護REST API 重拾后端之Spring Boot(一):REST API的搭建...

    keelii 評論0 收藏0
  • Spring Web

    摘要:認證鑒權與權限控制在微服務架構中的設計與實現(xiàn)一引言本文系認證鑒權與權限控制在微服務架構中的設計與實現(xiàn)系列的第一篇,本系列預計四篇文章講解微服務下的認證鑒權與權限控制的實現(xiàn)。 java 開源項目收集 平時收藏的 java 項目和工具 某小公司RESTful、共用接口、前后端分離、接口約定的實踐 隨著互聯(lián)網(wǎng)高速發(fā)展,公司對項目開發(fā)周期不斷縮短,我們面對各種需求,使用原有對接方式,各端已經(jīng)很...

    Kosmos 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<