프로젝트/잡스캐너
자바 16 레코드 클래스
성장에 몰입중인 개발자
2022. 9. 8. 21:41
기존 불변 데이터 객체 생성시에 모든 필드에 final을 사용하고 생성자, 접근자 메서드(getter), 출력 메서드(toString) 등을 재정의 해주어야 한다. lombock을 사용해 @AllArgsConstructor @Getter @ToString 등을 사용해 좀 더 편하게 정의할 수 있기는 하지만 매번 final과 @을 달아줘야하는 건 마찬가지다.
그래서 자바 16부터 record class를 공식적으로 제공한다. record class를 사용하면 간결한 방식으로 불변 데이터 객체를 정의할 수 있다.
모든 필드에 아래 적용
- private final
- 생성자
- getter()
- toString()
- equals()
- hashCode()
불변 데이터 객체로 사용해야하는 properties에 적합하여 이에 적용했다. 불변 데이터 객체로 사용하는 DTO에도 적용할 만한 것 같다.
@ConstructorBinding
@ConfigurationProperties(prefix = "auth")
public record AuthProperties(
Client client,
Jwt jwt
) {
public record Client(
Kakao kakao,
Google google,
Github github
) {
public record Kakao(
String tokenUrl,
String redirectUrl,
String clientId,
String clientSecret
) {
}
public record Google(
String tokenUrl,
String redirectUrl,
String clientId,
String clientSecret
) {
}
public record Github(
String tokenUrl,
String redirectUrl,
String clientId,
String clientSecret
) {
}
}
public record Jwt(
String appTokenSecret,
String refreshTokenSecret,
String appTokenExpiry,
String refreshTokenExpiry
) {
}
}
참고
https://scshim.tistory.com/372
https://marrrang.tistory.com/71