Spring Boot 웹 애플리케이션 성능 최적화

기본적으로 Spring Boot 웹 응용 프로그램은 일부 기능 구성 요소 Bean을 어셈블합니다.
대부분의 웹 응용 프로그램에서 자동으로 조립되는 스프링 구성 요소 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-Typeapplication/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 같은 설정 항목을 닫을 수 없습니다. 닫을 수 없습니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기