- ResponseEntity
- ResponseEntity는 Spring Framework에서 HTTP 요청에 대한 응답을 나타내는 클래스
- 이 클래스는 응답 데이터와 함께 HTTP 상태 코드, 헤더 등을 포함할 수 있어, RESTful 웹 서비스에서 응답의 세부 사항을 제어하는 데 유용
- 기본 구성
- HTTP 상태 코드
- ResponseEntity를 사용하면 응답에 특정 HTTP 상태 코드(예: 200 OK, 404 Not Found)를 명시적으로 설정이 가능
- 필수 요소
- 응답 헤더
- 응답에 필요한 HTTP 헤더를 추가할 수 있고, 캐싱, 인증 정보, 컨텐츠 타입 등의 정보를 클라이언트에 전달하는 데 사용
- 응답 본문
- body에는 데이터나 메시지를 담을 수 있으며, 이는 JSON, XML 등 다양한 형식으로 표현
- 주요 사용 패턴
- @ResponseStatus 어노테이션과 함께 간편하게 상태값 반환 목적으로 사용
- 주로 컨트롤러 메서드상단에 간단하게 어노테이션을 사용하여 표현
- 예시) @ResponseStatus(HttpStatus.NOT_FOUND)
- ResponseEntity의 ok, notFound, status 등의 클래스 메서드를 사용하여 데이터와 함께 return하는 체이닝 방식
- ResponseEntity.notFound(), ResponseEntity.ok() 등 메서드에서 지원되는 패턴은 제한적이므로, 자주 사용되는 상태코드 반환시에만 사용
- 예시)
User user = userService.getUserById(id);
return ResponseEntity.ok(user)
- ResponseEntity.status()메서드를 사용하여 body등 유연하게 사용하여 여러 설정을 연결
- 예시)
String context = "<header><h1>중복된 이메일 입니다.</h1></header>";
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(context);
- ResponseEntity를 직접 객체로 생성하는 방식
- ResponseEntity를 직접 생성하여 사용하는 방식은 응답 본문과 HTTP 상태 코드를 보다 세밀하게 제어
- return할때 객체 또는 String을 return
- Json return 예시)
- MyUser myUser = new MyUser();
myUser.setName("kim");
myUser.setEmail("[email protected]");
return new ResponseEntity<>(myUser, HttpStatus.CREATED);
- String - html return 예시)
- String context = "<header><h1>존재하지 않는 화면입니다.</h1></header>";
return new ResponseEntity<>(context, HttpStatus.NOT_FOUND);
- BaseEntity
- BaseEntity는 데이터베이스 엔티티 클래스에서 공통적으로 사용하는 필드와 기능을 정의하는 추상 클래스
- 주로 생성 시간, 수정 시간, 식별자(ID)와 같은 공통 속성을 포함
- 상속받는 엔티티 클래스들은 중복 코드를 줄이고, 일관된 방식으로 이러한 공통 속성을 관리
- 특징
- BaseEntity는 추상 클래스로 선언되어 직접 인스턴스화할 수 없으며, 이를 상속받는 서브 클래스만 인스턴스화
- JPA의 @MappedSuperclass 어노테이션을 사용하여 상속 구조에서의 매핑을 지원
- Entity클래스는 Entity클래스끼리만 상속을 받을 수 있는데 Entity클래스에서 일반 클래스를 상속받기 위해서는 해당 어노테이션을 작성필