record type
Spring Security 후발대 과제를 하다가 dto 클래스들을 record로 만드신 것을 발견했다.
records
- 값의 집합으로 이루어진 간단한 객체를 만들기 위함
- 불변 데이터를 다루기에 최적화
- 웹 서비스 구현에 많이 사용되는 dto에 적용하기 좋음
- 생성자, getter, equals(), hashCode(), toString() 등을 개발자가 구현하지 않아도 됨
- data carrier 용도임을 명시적으로 나타낼 수 있음
-> 코드 이해 쉬움
public record LoginRequest(String email, String password) {
}
@Getter
@Setter
public class SigninRequestDto {
private String email;
private String password;
}
특징
- final 클래스이므로 다른 클래스를 상속받을 수 없음/ 다른 클래스에 상속될 수 없음
- 자동생성 accessor 함수의 이름은 인스턴스 멤버 변수의 이름과 동일
- 클래스 접근제어자는 public, package-private만 가능
- 생성자의 접근제어자는 클래스의 접근제어자보다 제한된 수준이면 안됨
- jdk 16 부터 정식으로 사용 가능