Spring Boot 기반 웹 애플리케이션을 개발하다 보면 DTO(Data Transfer Object)와 Entity를 구분하지 않고 사용하는 경우가 종종 있습니다. 특히 초보 개발자일수록 @Entity 클래스를 그대로 컨트롤러에 넘기거나, 클라이언트 요청 바디에 바인딩하는 실수를 저지르기도 합니다.하지만 실무에서는 DTO와 Entity를 명확히 분리하는 것이 유지보수성과 보안, 유연한 확장성 측면에서 매우 중요합니다. 1. DTO와 Entity의 역할 차이Entity: JPA에서 데이터베이스 테이블과 매핑되는 핵심 도메인 객체입니다. 주로 Repository 계층과 연동됩니다.DTO: 계층 간 데이터 전달을 위한 객체로, 프레젠테이션 레이어(View, API)와 도메인 모델 간의 간극을 메워줍니다.한..
@RequestParam과 @PathVariable은 Spring MVC에서 클라이언트 요청으로 전달된 값을 컨트롤러 메서드에 바인딩할 때 사용하는 핵심 어노테이션입니다. 특히 REST API 설계 시 이 둘의 차이와 사용법을 정확히 이해하고 있는 것이 중요합니다. 1. @RequestParam: 쿼리 스트링 파라미터 바인딩@RequestParam은 ?key=value 형식의 쿼리 스트링 파라미터를 메서드 인자에 주입할 때 사용합니다.예시@GetMapping("/search")public String search(@RequestParam String keyword, @RequestParam(defaultValue = "1") int page) { System.out.println("검색어: " + ..
Spring MVC는 Java 기반 웹 애플리케이션 개발에서 가장 많이 사용되는 아키텍처 중 하나입니다. 그러나 단순히 @Controller나 @RestController를 사용하는 것에 그치지 않고, 실제로 HTTP 요청이 들어온 뒤 어떻게 처리되어 응답이 나가는지 그 흐름을 이해하는 것은 프레임워크에 대한 깊은 이해와 디버깅 능력을 향상시키는 데 도움이 됩니다. 1. DispatcherServlet이란?Spring MVC의 핵심은 DispatcherServlet입니다. 모든 웹 요청은 가장 먼저 DispatcherServlet이 받습니다. 이는 일종의 중앙집중형 프론트 컨트롤러(Front Controller)입니다. web.xml이나 Spring Boot에서는 @SpringBootApplication..
Spring으로 웹 애플리케이션 또는 REST API를 개발하다 보면 @Controller와 @RestController를 언제 어떻게 써야 할지 혼란스러울 때가 있습니다. 둘 다 HTTP 요청을 처리하기 위해 사용되는 어노테이션이지만, 사용하는 목적과 동작 방식에는 명확한 차이가 있습니다.실무에서 자주 마주하는 이 두 어노테이션의 개념과 차이, 사용 사례를 정리해 보겠습니다. 1. @Controller – 전통적인 MVC 패턴을 위한 어노테이션@Controller는 Spring MVC에서 View 기반 애플리케이션을 만들 때 사용하는 어노테이션입니다. 핵심은 메서드의 반환값이 View의 이름이라는 점입니다. 일반적으로 JSP, Thymeleaf 같은 템플릿 엔진과 함께 사용됩니다.@Controller..
Spring Boot 또는 Spring MVC 기반 프로젝트를 하다 보면 @Controller와 @RestController 중 어떤 걸 써야 할지 혼란스러울 수 있습니다. 둘 다 웹 요청을 처리하는 데 사용되지만, 내부적으로 작동하는 방식은 분명한 차이가 있습니다. 그 차이를 명확하게 짚어보고, 언제 어떤 어노테이션을 사용해야 할지를 정리해보겠습니다. 1. @Controller란 무엇인가?@Controller는 전통적인 Spring MVC에서 사용하는 어노테이션으로, HTML 기반의 View(ViewResolver)를 반환할 때 사용됩니다. 즉, JSP나 Thymeleaf와 같은 템플릿 엔진을 통해 사용자에게 UI를 제공할 때 주로 사용됩니다.@Controllerpublic class PageContr..