国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Boot Web 應用性能優化

happen / 2732人閱讀

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

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

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

配置項優化 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 請求結果指標(如:相應狀態碼、請求方法執行時間等),該信息一定程度上與反向代理服務器(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 版本引入,分發在 org.springframework:spring-web 中。

使用場景

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

當 HTTP 請求頭Content-Typeapplication/x-www-form-urlencoded
,Form 數據被 encoded。而 Servlet 規范中, ServletRequest.getParameter*()
方法僅對 HTTP POST 方法支持請求參數的獲取,如:

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 在絕大
多數 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 版本引入,分發在 org.springframework:spring-web 中。

使用場景

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

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

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

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

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 版本中實現,也沒有提供類似
spring.mvc.formcontent.putfilter.enabled 這樣的配置項關閉,無法關閉。

了解更多?

更多關于 Spring Boot Web 應用性能優化內容,請參考《Java 微服務實戰系列課堂》,其中將有系統和深入的討論。

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

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

相關文章

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

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

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

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

    tommego 評論0 收藏0
  • Spring Security

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

    keelii 評論0 收藏0
  • Spring Web

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

    Kosmos 評論0 收藏0

發表評論

0條評論

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