토비의 스프링 부트 - 이해와 원리/섹션11 - 스프링 부트 자세히 살펴보기
Web 자동 구성 살펴보기
DOGvelopers
2025. 1. 4. 15:16
반응형
스프링 부트 웹 모듈의 자동 구성 분석
스프링 부트의 웹 모듈(Spring Web)을 추가하면, 기본적인 웹 애플리케이션을 구현하기 위해 필요한 다양한 빈과 설정이 자동으로 구성됩니다. 이 과정에서는 웹 애플리케이션의 구성과 작동 방식에 필요한 주요 자동 구성 요소를 살펴봅니다.
1. 자동 구성 추가로 인한 변화
- 자동 구성 빈 개수 증가:
- 웹 모듈 추가 전: 약 13개 (JMX 제외).
- 웹 모듈 추가 후: 약 62개.
- 약 50개의 자동 구성 빈이 추가됨.
2. 주요 자동 구성 클래스
1) HTTP 메시지 컨버터 (HttpMessageConvertersAutoConfiguration)
- 역할:
- JSON, XML, Text 등 다양한 형식의 데이터를 HTTP 요청과 응답의 본문으로 변환.
- 주요 컨버터:
- StringHttpMessageConverter: 문자열을 변환.
- MappingJackson2HttpMessageConverter: JSON 처리.
- 조건:
- spring-web 모듈이 포함되어야 활성화.
- 리액티브 모드에서는 다른 컨버터 사용.
- 활용:
- 사용자 정의 인코딩, 캐릭터 세트를 설정하여 다국어 지원.
2) Jackson ObjectMapper 자동 구성
- 기본 설정:
- Jackson2ObjectMapperBuilder를 통해 기본 JSON 매퍼 빈 생성.
- 커스터마이징 포인트 제공.
- 활용:
- 스프링 부트의 설정값을 유지하면서 사용자 정의 설정 가능.
- 직접 객체를 생성하지 않고 주입받아 사용 권장.
3) RestTemplateAutoConfiguration
- 역할:
- RESTful API 호출을 위한 템플릿 제공.
- 구성:
- RestTemplateBuilder 빈을 제공.
- 추가 설정 후 빈으로 등록 가능.
- 활용:
- New RestTemplate 방식 대신 RestTemplateBuilder 사용 권장.
3. 서블릿 컨테이너 및 HTTP 관련 자동 구성
1) 임베디드 서블릿 컨테이너
- 지원 컨테이너:
- Tomcat (기본값), Jetty, Undertow.
- 설정:
- server.tomcat과 같은 프로퍼티를 통해 세부 설정 가능.
- SSL, HTTP2, URI 인코딩 등 세부 설정 포함.
2) DispatcherServlet 자동 구성
- 역할:
- HTTP 요청을 처리하고 컨트롤러로 라우팅.
- 구성:
- 기본적으로 생성되며 프로퍼티를 통해 세부 설정 가능.
3) HTTP 인코딩 필터
- 역할:
- 요청 및 응답의 문자 인코딩 설정.
- 기본 빈:
- CharacterEncodingFilter 자동 등록.
4) 멀티파트 파일 업로드
- 지원 옵션:
- 기본: StandardServletMultipartResolver.
- Apache Commons 라이브러리를 추가하면 우선 적용.
4. 에러 처리 및 기타 자동 구성
1) 에러 처리 빈
- 구성:
- BasicErrorController: 기본 에러 처리.
- ErrorAttributes: 에러 정보 제공.
- 활용:
- 커스터마이징하여 애플리케이션에 적합한 에러 처리 구현 가능.
2) 웹 MVC 기본 구성
- 구성:
- 폼 콘텐츠 필터, 플래시 맵 매니저, 로컬 리졸버 등이 자동 등록.
3) WebSocket 자동 구성
- 역할:
- WebSocket 기능 사용 시 관련 빈 제공.
5. 자동 구성 활용 전략
- 자동 구성 이해:
- 기본 제공되는 빈과 설정을 파악하고 필요 시 변경.
- 커스터마이징 포인트 활용:
- 커스터마이저, 빌더를 활용하여 세부 설정 가능.
- 스프링 부트 기본 설정 유지:
- 스프링 부트의 디폴트 설정을 최대한 활용하여 유지 보수성과 일관성 확보.
결론
스프링 부트의 웹 모듈 자동 구성은 HTTP 요청과 응답, 서블릿 컨테이너, 에러 처리 등 기본적인 웹 애플리케이션 구성 요소를 지원합니다. 이를 활용하여 빠르게 애플리케이션을 개발하고, 필요 시 커스터마이징을 통해 요구 사항에 맞는 설정을 추가할 수 있습니다.
반응형