Tech Stack/Spring Boot

[Spring] 25. 검증 오류 메시지 처리하기

[Spring] 25. 검증 오류 메시지 처리하기이전 글에서는 @Valid와 BindingResult에 대해 살펴봤습니다. @Valid는 DTO에 작성한 검증 규칙을 실행하고, BindingResult는 검증 실패 결과를 담아 Controller에서 확인할 수 있게 해줍니다.이번 글에서는 검증 실패가 발생했을 때 오류 메시지를 어떻게 꺼내고, 화면이나 API 응답으로 어떻게 전달하는지 정리하겠습니다. 사용자가 잘못 입력했을 때 단순히 실패라고만 보여주면 안 됩니다. 어떤 값이 잘못되었고, 어떻게 고쳐야 하는지 알려주는 것이 중요합니다.핵심은 간단합니다. BindingResult에는 검증 실패 정보가 들어 있고, 이 정보를 이용해 필드별 오류 메시지를 화면이나 JSON 응답으로 보여줄 수 있습니다.1. 검..

[Spring] 26. @ExceptionHandler와 @ControllerAdvice

[Spring] 26. @ExceptionHandler와 @ControllerAdvice이전 글에서는 검증 오류 메시지 처리 방법을 살펴봤습니다. @Valid로 검증을 실행하고, BindingResult로 오류 결과를 확인한 뒤 화면이나 API 응답으로 오류 메시지를 전달할 수 있었습니다.이번 글에서는 Spring에서 예외를 처리하는 방법인 @ExceptionHandler와 @ControllerAdvice에 대해 정리하겠습니다. 프로젝트가 커지면 Controller마다 try-catch를 반복하는 구조가 생길 수 있습니다. 이런 반복을 줄이고, 오류 응답을 한 곳에서 관리하기 위해 공통 예외 처리가 필요합니다.핵심은 간단합니다. @ExceptionHandler는 특정 예외가 발생했을 때 실행할 메서드를 ..

[Spring] 24. @Valid와 BindingResult

[Spring] 24. @Valid와 BindingResult이전 글에서는 ResponseEntity에 대해 살펴봤습니다. ResponseEntity는 API 응답에서 상태 코드, Header, Body를 함께 제어할 수 있는 객체입니다.이번 글에서는 사용자가 입력한 값이 올바른지 검사하는 @Valid와 검증 결과를 담는 BindingResult에 대해 정리하겠습니다. 회원가입, 게시글 작성, 로그인, 댓글 등록 같은 기능에서는 빈 값, 글자 수, 이메일 형식 같은 검증이 필요합니다.핵심은 간단합니다. @Valid는 DTO에 작성한 검증 규칙을 실행하고, BindingResult는 검증 실패 결과를 Controller에서 확인할 수 있게 해줍니다.1. 입력값 검증이 필요한 이유웹 애플리케이션에서는 사용자..

[Spring] 23. ResponseEntity란?

[Spring] 23. ResponseEntity란?이전 글에서는 @ResponseBody와 @RestController에 대해 살펴봤습니다. @ResponseBody는 Controller 메서드의 반환값을 View 이름으로 보지 않고, HTTP 응답 Body에 직접 담아 반환하게 해주는 어노테이션입니다.이번 글에서는 API 응답을 더 세밀하게 제어할 수 있는 ResponseEntity에 대해 정리하겠습니다. 단순히 데이터만 반환하는 것이 아니라, HTTP 상태 코드와 Header, Body를 함께 다룰 수 있습니다.핵심은 간단합니다. ResponseEntity는 HTTP 응답 전체를 표현하는 객체입니다.1. ResponseEntity란?ResponseEntity는 Spring에서 HTTP 응답을 직접 ..

[Spring] 22. @ResponseBody와 @RestController

[Spring] 22. @ResponseBody와 @RestController이전 글에서는 @RequestBody에 대해 살펴봤습니다. @RequestBody는 요청 Body에 들어있는 JSON 데이터를 Java 객체로 받을 때 사용하는 어노테이션입니다.이번 글에서는 반대로 서버가 응답 데이터를 직접 반환할 때 사용하는 @ResponseBody와 @RestController에 대해 정리하겠습니다. Spring MVC에서는 Controller가 문자열을 반환할 때 그 문자열을 화면 이름으로 볼 수도 있고, 응답 데이터로 볼 수도 있습니다. 이 차이를 이해하는 것이 중요합니다.핵심은 간단합니다. @ResponseBody는 Controller 메서드의 반환값을 View 이름으로 해석하지 않고, HTTP 응답 ..

[Spring] 21. @RequestBody란?

[Spring] 21. @RequestBody란?이전 글에서는 @ModelAttribute와 DTO 바인딩에 대해 살펴봤습니다. @ModelAttribute는 HTML form이나 요청 파라미터로 전달된 값을 DTO 객체에 담을 때 사용합니다.이번 글에서는 JSON 요청 데이터를 객체로 받는 @RequestBody에 대해 정리하겠습니다. Spring에서 REST API를 만들 때 자주 사용하는 어노테이션입니다.핵심은 간단합니다. @RequestBody는 요청 Body에 들어있는 JSON 데이터를 Java 객체로 변환해서 Controller 메서드에서 사용할 수 있게 해줍니다.1. @RequestBody란?@RequestBody는 HTTP 요청 Body에 담긴 데이터를 Java 객체로 받을 때 사용하는 어..

[Spring] 20. @ModelAttribute와 DTO 바인딩

[Spring] 20. @ModelAttribute와 DTO 바인딩이전 글에서는 @PathVariable에 대해 살펴봤습니다. @PathVariable은 URL 경로에 포함된 값을 Controller 메서드에서 받을 때 사용하는 어노테이션입니다.이번 글에서는 폼 입력값을 객체로 받는 방법인 @ModelAttribute와 DTO 바인딩에 대해 정리하겠습니다. 게시글 작성, 회원가입, 로그인처럼 입력값이 여러 개 있는 경우에는 값을 하나씩 받는 것보다 DTO로 묶어서 받는 것이 더 깔끔합니다.핵심은 간단합니다. @ModelAttribute는 요청 파라미터 값을 객체에 담아 Controller 메서드에서 사용할 수 있게 해주는 방법입니다.1. DTO로 값을 받는 이유사용자가 게시글 작성 폼에서 제목, 내용, ..

[Spring] 19. @PathVariable이란?

[Spring] 19. @PathVariable이란?이전 글에서는 @RequestParam에 대해 살펴봤습니다. @RequestParam은 URL의 쿼리 문자열이나 폼 데이터로 전달된 값을 Controller 메서드에서 받을 때 사용하는 어노테이션입니다.이번 글에서는 URL 경로 자체에 포함된 값을 받는 @PathVariable에 대해 정리하겠습니다. 게시글 번호, 회원 번호, 상품 번호처럼 특정 자원을 식별하는 값은 URL 경로에 포함해서 표현할 수 있습니다.핵심은 간단합니다. @PathVariable은 URL 경로의 일부 값을 Controller 메서드의 파라미터로 받을 때 사용하는 어노테이션입니다.1. @PathVariable이란?@PathVariable은 URL 경로 안에 들어있는 값을 꺼내서 C..