SSAFY/SPRING

study 질문 정리

GWLEE 2026. 4. 11. 22:06

1. Bean(빈)이란 무엇일까?

Bean은 Spring이 생명주기를 직접 관리하는 자바 객체입니다.

보통 우리가 객체를 만들 때 new PostService()처럼 직접 생성하지만, Spring에서는 개발자가 직접 하지 않고 Spring 컨테이너가 객체를 생성, 조립, 관리하게 맡깁니다. 이렇게 컨테이너에 담겨 관리되는 객체를 'Bean'이라고 부릅니다.

  • 사용자님의 코드에서 @Service, @RestController, @Repository 어노테이션이 붙은 클래스들이 바로 Spring에 의해 Bean으로 등록되는 대상들입니다.

2. Spring MVC의 흐름과 Servlet과의 차이점

Spring MVC의 흐름

Spring MVC는 DispatcherServlet이라는 거대한 '중앙 관제탑'을 중심으로 동작합니다.

  1. 클라이언트 요청: 브라우저가 요청을 보냅니다.
  2. DispatcherServlet: 모든 요청을 가장 먼저 받아 분석합니다.
  3. Handler Mapping: "이 요청(URL)은 어떤 Controller가 처리해야 하지?"를 찾아 연결해 줍니다.
  4. Controller & Service: 실제 비즈니스 로직을 수행합니다.
  5. View Resolver / ResponseBody: 처리 결과를 어떤 화면으로 보여줄지, 혹은 JSON 데이터로 바로 보낼지 결정하여 응답합니다.

Servlet과의 차이점

  • Servlet: 요청 하나당 서블릿 하나를 매핑하거나 복잡한 설정을 직접 해야 합니다. (노가다 작업이 많음)
  • Spring MVC: DispatcherServlet이 딱 하나 존재하여 모든 요청을 받은 뒤, 내부적으로 분산 처리합니다. 개발자는 공통 로직(보안, 파싱 등)을 신경 쓰지 않고 비즈니스 로직(Controller) 작성에만 집중할 수 있습니다.

3. HTTP 메서드 매핑 (GET, POST, PUT, DELETE)

리소스(데이터)를 어떻게 다룰 것인지 정의하는 약속입니다.

  • @GetMapping: 데이터를 조회할 때 사용합니다. (예: 게시글 목록 가져오기)
  • @PostMapping: 새로운 데이터를 생성할 때 사용합니다. (예: 글쓰기)
  • @PutMapping: 기존 데이터를 수정할 때 사용합니다. (전체 수정)
  • @DeleteMapping: 데이터를 삭제할 때 사용합니다.

4. 데이터 전달 방식 3가지

사용자님의 PostController.java에서도 사용되고 있는 방식들입니다.

방식 설명 예시 코드
@RequestBody HTTP Body에 담긴 JSON 데이터를 객체로 변환해 받을 때 사용합니다. (주로 POST, PUT) createPost(@RequestBody PostRequest request)
@PathVariable URL 경로에 포함된 값을 변수로 받을 때 사용합니다. /api/posts/{id} → (@PathVariable Long id)
@RequestParam URL 뒤에 ?name=value 형태로 붙는 쿼리 파라미터를 받을 때 사용합니다. /api/posts?category=java

5. ResponseEntity<?> 한 문장 요약

"단순한 데이터뿐만 아니라, HTTP 상태 코드(200 OK, 404 Not Found 등)와 헤더 정보를 세밀하게 설정해서 클라이언트에게 보낼 수 있는 '응답 종합 선물 세트'입니다."

현재 코드에서는 PostResponse 객체만 반환하고 있지만, ResponseEntity.ok(response) 혹은 ResponseEntity.status(201).body(response)처럼 사용하면 더 전문적인 응답을 만들 수 있습니다.

'SSAFY > SPRING' 카테고리의 다른 글

DTO  (0) 2026.03.29
싱글톤, 의존성 주입, Bean  (0) 2026.03.29
Spring study  (0) 2026.03.27