반응형
handler(핸들러)는 "요청을 처리하는 자" 라는 의미로, 웹 애플리케이션이 클라이언트로부터 받은 HTTP 요청을 처리할 수 있는 모든 객체를 의미합니다. 쉽게 말해, 핸들러는 사용자가 웹 브라우저에서 요청을 보냈을 때, 그 요청을 받아 처리하는 역할을 맡는 "사람"이라고 생각할 수 있어요.
spring 핸들러의 역할
- 요청을 받는다: 클라이언트(예: 웹 브라우저)가 특정 페이지에 접근하거나 데이터를 서버에 요청할 때, 서버는 요청을 받아야 합니다.
- 요청을 분석하고 처리한다: 핸들러는 요청의 내용을 확인하고, 그에 맞는 작업을 수행합니다. 예를 들어, 사용자가 로그인을 시도한다면, 핸들러는 해당 로그인 정보를 확인하고, 맞는지 검증하는 작업을 진행합니다.
- 응답을 생성한다: 요청이 처리된 후, 핸들러는 사용자에게 결과를 전달할 응답을 만듭니다. 이 응답은 성공 또는 실패 메시지일 수도 있고, 데이터일 수도 있습니다.
spring 핸들러의 구성 요소와 동작 방식
스프링에서는 핸들러가 작동하는 데 있어 몇 가지 주요 구성 요소가 있습니다. 이러한 구성 요소가 함께 작동하면서 클라이언트의 요청을 처리합니다.
- 핸들러 매핑 (Handler Mapping):
- 핸들러 매핑은 클라이언트의 요청 URL을 확인하고, 해당 요청을 처리할 핸들러를 찾는 역할을 합니다.
- 예를 들어, 사용자가 /users라는 URL로 요청을 보냈을 때, 이 요청을 처리할 수 있는 핸들러(예: UserController의 메서드)를 찾아냅니다.
- 핸들러 어댑터 (Handler Adapter):
- 핸들러 어댑터는 찾아낸 핸들러를 실행할 수 있도록 적절한 형태로 변환하는 역할을 합니다.
- 다양한 형태의 핸들러가 있을 수 있기 때문에, 스프링은 각각의 핸들러에 맞는 어댑터를 사용하여 핸들러를 실행할 준비를 합니다. 예를 들어, @Controller로 정의된 클래스의 메서드를 호출하는 어댑터가 있고, 다른 유형의 핸들러를 호출하는 어댑터도 있습니다.
- 핸들러 자체 (Handler):
- 핸들러는 실제로 HTTP 요청을 처리하는 객체입니다. 컨트롤러 메서드나 다른 형태의 요청 처리 객체가 될 수 있습니다.
- 예를 들어, UserController의 getUsers() 메서드는 특정한 요청을 처리하기 위한 핸들러로 작동합니다.
spring 핸들러의 실제 동작 예시
- 클라이언트가 요청을 보낸다:
- 클라이언트(예: 웹 브라우저)가 http://example.com/users로 GET 요청을 보냅니다.
- 핸들러 매핑이 작동한다:
- 스프링의 핸들러 매핑(예: RequestMappingHandlerMapping)이 /users 요청을 처리할 핸들러를 찾습니다. 이 경우 UserController의 getUsers() 메서드를 찾습니다.
- 핸들러 어댑터가 작동한다:
- 스프링의 핸들러 어댑터(예: RequestMappingHandlerAdapter)가 getUsers() 메서드를 실행할 준비를 합니다. 필요한 경우 요청의 파라미터를 메서드의 인자로 변환하거나, 요청에 대한 추가 처리를 합니다.
- 핸들러가 요청을 처리한다:
- UserController의 getUsers() 메서드가 실행되어 요청을 처리하고, 필요한 데이터를 조회한 후, 뷰에 전달할 모델 데이터를 준비합니다.
- 응답을 생성하고 반환한다:
- 메서드가 처리 결과와 함께 뷰의 이름을 반환하면, 스프링은 이 정보를 바탕으로 클라이언트에게 응답을 보냅니다. 예를 들어, 사용자 목록을 보여주는 HTML 페이지가 될 수 있습니다.
핸들러의 종류와 확장성
스프링 프레임워크에서는 여러 종류의 핸들러를 사용할 수 있습니다:
- 컨트롤러 클래스의 메서드: 일반적으로 @Controller 어노테이션이 붙은 클래스의 메서드가 가장 많이 사용되는 핸들러입니다.
- 함수형 핸들러: 스프링 5부터는 자바 8의 람다식과 함수형 프로그래밍 스타일을 이용한 핸들러도 지원합니다.
- 인터셉터: 요청이 핸들러에 도달하기 전이나 후에 추가적인 작업(예: 인증, 로깅 등)을 수행할 수 있는 핸들러입니다.
정리
- 핸들러(Handler): 스프링에서 HTTP 요청을 처리하는 모든 객체. 컨트롤러 메서드도 핸들러의 한 종류.
- 핸들러 매핑: 들어오는 요청을 처리할 핸들러를 찾아주는 역할.
- 핸들러 어댑터: 핸들러를 실행할 수 있도록 준비하는 역할.
반응형
'Spring' 카테고리의 다른 글
DTO, VO의 개념 (0) | 2024.12.17 |
---|---|
Controller vs Handler (0) | 2024.08.29 |
JPA Could not write JSON: failed to lazily initialize a collection of role 에러 해결 (0) | 2024.04.04 |
Spring database config bean 다중 설정 예제 by JPA (0) | 2024.04.04 |
Spring database config bean 설정 예제 by JPA (0) | 2024.04.04 |