스프링 프레임워크 빈(Bean)과 핸들러(Handler) 개념 이해하기
- Server
- 2023. 7. 5.
스프링 프레임워크(Spring Framework)는 자바(Java) 개발에 가장 많이 사용되는 오픈 소스 프레임워크입니다. 스프링은 웹 개발에 특화된 여러 기능을 제공하는데요. 그중에서 가장 중요한 개념 중 하나인 빈(Bean)과 핸들러(Handler)라는 개념을 이해해 보겠습니다. 이 개념을 이해하면 소스 코드에 붙은 @RestController, @RequestMapping 같은 어노테이션의 의미를 보다 정확히 이해할 수 있습니다.
빈(Bean)과 핸들러(Handler)
빈 (Bean)은 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 말합니다. 말이 좀 어렵긴 하지만 애플리케이션의 비즈니스 로직을 담당하는 서비스 클래스, 데이터를 처리하는 DAO 클래스, 컨트롤러 같은 구성 요소들을 의미한다고 이해하시면 됩니다.
핸들러 (Handler)는 스프링 MVC에서 중요한 역할을 하는 컴포넌트입니다. 클라이언트의 요청을 받아서 처리하고 적절한 모델을 뷰에 반환하는 역할을 합니다. 클라이언트의 요청을 처리할 수 있는 서블릿을 가르쳐주는 역할입니다.
스프링에서 @Controller 또는 @RestController 어노테이션이 붙은 클래스를 빈으로 등록합니다. 그리고 클래스 내부에 @RequestMapping, @GetMapping, @PostMapping 같은 어노테이션이 붙은 메서드가 핸들러가 됩니다.
예시)
어노테이션이 사용되는 예시 코드를 보겠습니다.
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class ExampleController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
@PostMapping("/greeting")
public String greeting(@RequestBody String name) {
return "Hello, " + name;
}
}
이 코드에서 ExampleController는 @RestController 어노테이션이 붙었으므로 스프링 애플리케이션 컨텍스트에 빈으로 등록됩니다. 그리고 이 클래스의 메서드 중에서 @GetMapping 또는 @PostMapping 어노테이션이 붙은 메서드는 HTTP 요청을 처리하는 핸들러가 됩니다.
@RequestMapping("/api") 어노테이션이 붙은 ExampleController는 "/api" 경로로 시작하는 요청을 처리하는 역할을 합니다. 이 클래스 내부의 @GetMapping("/hello") 어노테이션이 붙은 hello() 메서드는 "/api/hello" 경로로의 GET 요청을 처리하며, @PostMapping("/greeting") 어노테이션이 붙은 greeting() 메서드는 "/api/greeting" 경로로의 POST 요청을 처리합니다.
즉, 클라이언트가 "http://yourwebsite.com/api/hello"로 GET 요청을 보내면 hello() 메서드가 호출되어 "Hello, World!" 문자열을 반환하며, 이 문자열이 HTTP 응답의 본문이 됩니다. 또한, 클라이언트가 "http://yourwebsite.com/api/greeting"로 POST 요청을 보내고 요청 본문에 "OpenAI"라는 문자열을 담으면 greeting() 메서드가 호출되어 "Hello, OpenAI" 문자열을 반환하며, 이 문자열이 HTTP 응답의 본문이 됩니다.
'Server' 카테고리의 다른 글
[ERROR] java.lang.UnsatisfiedLinkError: no xxx in java.library.path 원인 (0) | 2023.09.06 |
---|---|
JSP 자바 수정 후 WAS 재기동 안 해도 되는 이유 (0) | 2023.08.08 |
자바 Impl 클래스 만드는 이유 (0) | 2023.06.24 |
스프링 DispatcherServlet이란? (0) | 2023.06.23 |
CentOS 7 파이썬 virtualenv 가상환경 만드는 방법 (0) | 2023.06.03 |