1. 클라이언트 요청의 시작
웹 애플리케이션에서의 모든 작업은 클라이언트의 요청으로 시작됩니다. 사용자는 URL을 통해 특정 리소스에 접근하거나, 폼을 제출하게 됩니다.
2. 서버 수신과 필터 처리
스프링 부트 내장 웹 서버가 요청을 받기 시작하면, 최초로 필터(Filter) 영역을 거칩니다.
2.1 필터 (Filter)
필터는 서블릿 컨테이너 레벨에서 작동하며, 요청과 응답을 가로챕니다. 인증, 인가, 로깅, 인코딩 처리 등에 사용될 수 있습니다.
3. 디스패처 서블릿과 인터셉터
요청이 필터를 통과하면 디스패처 서블릿으로 전달되며, 여기서 인터셉터(Interceptor)가 작동할 수 있습니다.
3.1 인터셉터 (Interceptor)
인터셉터는 필터와 유사하게 동작하지만, 스프링 컨텍스트 내에서 작동하므로 더 많은 기능을 사용할 수 있습니다.
4. 요청 매핑
디스패처 서블릿은 요청을 처리할 적절한 컨트롤러를 찾습니다. 이 과정은 URL, HTTP 메소드 등을 기반으로 합니다.
5. 컨트롤러 실행 및 AOP
매핑된 컨트롤러의 메소드가 실행되는 단계입니다. 이때 AOP(Aspect-Oriented Programming)가 적용될 수 있습니다.
5.1 AOP (Aspect-Oriented Programming)
AOP는 교차 관심사(cross-cutting concerns)를 분리하여 코드의 재사용성을 향상시킵니다. 로깅, 보안, 트랜잭션 등의 기능을 분리하여 중복을 제거합니다.
6. 데이터 바인딩 및 검증
클라이언트로부터 받은 데이터가 모델 객체에 바인딩되고, 필요한 검증 규칙이 적용됩니다.
7. 뷰 렌더링
컨트롤러가 뷰 이름을 반환하면, 뷰 리졸버가 해당 뷰를 찾아 렌더링합니다.
8. 응답 생성과 클라이언트로 응답 전송
최종 응답이 생성되어 클라이언트로 전송됩니다. 이때에도 인터셉터가 작동할 수 있습니다.
9. 예외 처리
예외는 컨트롤러 어드바이스, 글로벌 예외 핸들러 등을 통해 처리됩니다.
결론
스프링 부트는 클라이언트 요청부터 응답까지의 과정을 간결하게 관리합니다. AOP와 인터셉터는 이 과정에서 코드의 재사용성을 높이고, 보안과 로깅 같은 중요한 부가 기능을 제공합니다.
'spring' 카테고리의 다른 글
스프링에서의 빈(Bean) 생성과 관리 (0) | 2023.09.12 |
---|---|
스프링에서 빈(Bean)과 싱글턴 패턴: 오브젝트 매퍼를 어떻게 관리할까? (0) | 2023.09.12 |
스프링 시큐리티에서 인증(Authentication)과 권한(Authorization) 차이 (0) | 2023.08.09 |
Spring Framework에서 @Bean과 @Component의 차이점 이해하기 (0) | 2023.07.07 |
Spring DI의 세 가지 방식: 생성자 주입, 세터 주입, 필드 주입 (0) | 2023.07.06 |