Spring Boot 웹 애플리케이션 성능 최적화
대부분의 웹 응용 프로그램에서 자동으로 조립되는 스프링 구성 요소 Bean을 선택적으로 닫아 성능을 향상시키는 목적을 달성할 수 있다.
구성 항목 최적화
Spring Boot 웹 응용 프로그램 전체 구성 항목 가속화
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
웹 요청 추적 자동 어셈블 닫기org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration
말 그대로 이 자동 조립용 추적 웹 요청은 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
웹 요청 결과 지표 자동 어셈블 닫기org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration
이 구성 요소는 자동으로 조립됩니다 org.springframework.boot.actuate.autoconfigure.MetricsFilter
. 이 Filter는 웹 요청 결과 지표 (예를 들어 상응하는 상태 코드, 요청 방법의 실행 시간 등) 를 기록합니다. 이 정보는 어느 정도 역방향 프록시 서버 (nginx) 기능과 중첩되기 때문에 닫기를 선택할 수 있습니다.구성 항목
spring.autoconfigure.exclude = org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration
Servlet 웹 구성 요소 닫기 가능org.springframework.web.filter.HttpPutFormContentFilter
도입 버전org.springframework.web.filter.HttpPutFormContentFilter
는 Spring Framework 3.1 버전으로 도입되어 org.springframework:spring-web
에 배포됩니다.장면 사용
일반적으로 웹 장면에서 브라우저는 HTTP GET 또는 POST를 통해 Form 데이터를 제출할 수 있으며, 브라우저 클라이언트(예를 들어 응용 프로그램)가 아닌 HTTP PUT 요청을 통해 이루어질 수 있습니다.
HTTP 요청 헤더 Content-Type이 application/x-www-form-urlencoded일 때 Form 데이터는 encoded됩니다.Servlet 사양에서는 Servlet Request입니다.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 요청 메서드(요청 헤더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
대부분의 웹 사용 장면에서 필수 구성 요소가 아닙니다.구성 항목
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
는 SpringFramework 3.0 버전으로 도입되어 org.springframework:spring-web
에 배포됩니다.장면 사용
웹 서비스 측의 동일한 자원(URL)이 다중 요청 방법의 실현을 제공했다. 예를 들어 URI:/update는 HTTP POST와 HTTP PUT 실현을 제공했다. 보통 웹 장면에서 브라우저는 HTTP GET나 POST 요청 방법만 지원한다. 그러면 브라우저는 HTTP PUT 요청을 시작할 수 없다.
브라우저가 HTTP PUT 자원을 소비할 수 있도록 서버에서 HTTP POST를 HTTP PUT 요청으로 전환해야 합니다. 이런 문제를 해결하기 위해 스프링 도입
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 버전에서 구현되었고 유사한 스프링도 제공되지 않았습니다.mvc.formcontent.putfilter.enabled 같은 설정 항목을 닫을 수 없습니다. 닫을 수 없습니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.