浅谈Spring Boot Web 应用性能优化
默认情况下,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.MetricFilterAutoConfiguration 关闭 Web 请求跟踪 自动装配
顾名思义,该自动装配用跟踪 Web 请求,通过 配置项 spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration
当 配置项 spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration 关闭 Web 请求结果指标 自动装配
该组件将自动装配 配置项 spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration 可关闭 Servlet Web 组件
引入版本
使用场景 通常 Web 场景中,浏览器通过 HTTP GET 或者 POST 请求 提交 Form 数据,而非浏览器客户端(如应用程序)可能通过 HTTP PUT 请求来实现。 当 HTTP 请求头Content-Type 为 application/x-www-form-urlencoded 时,Form 数据被 encoded。而 Servlet 规范中, ServletRequest.getParameter*()方法仅对 HTTP POST 方法支持请求参数的获取,如: public intetfacce ServletRequest { ...... public String getParameter(String name); public Enumeration<String> getParameterNames(); public String[] getParameterValues(String name); public Map<String,String[]> getParameterMap(); ...... } 故 以上方法无法支持 HTTP PUT 或 HTTP PATCH 请求方法(请求头
Spring Boot 默认场景下,将 @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(); } ...... } 综上所述, 配置项 如果应用依赖 Spring Boot 版本 为 1.4.1.RELEASE 以及更高的版本,可通过如下配置,进行将 spring.mvc.formcontent.putfilter.enabled = false
引入版本
使用场景 当 Web 服务端同一资源(URL)提供了多请求方法的实现,例如 URI :/update 提供了HTTP POST 以及 HTTP PUT 实现),通常 Web 场景中,浏览器仅支持 HTTP GET或者 POST 请求方法,这样的话,浏览器无法发起 HTTP PUT 请求。 为了浏览器可以消费 HTTP PUT 资源, 需要在服务端将 HTTP POST 转化成HTTP PUT 请求,为了解决这类问题,Spring 引入 当浏览器 发起 HTTP POST 请求时,可通过增加请求参数(默认参数名称:"_method")的方式,进行HTTP 请求方法切换, 出于通用性的考虑, Spring Boot 默认场景下,将 @Configuration @ConditionalOnWebApplication @ConditionalOnClass({ Servlet.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 这样的配置项关闭,无法关闭。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |