역할
- 로그인/토큰 갱신 시 클라이언트에 전달되는 응답 전용 DTO
- accessToken / refreshToken 불변 객체로 안전하게 관리
- AuthService → AuthController → 클라이언트 전달용
1. 구조
// record: 데이터만 담는 불변 객체 DTO를 아주 간단하게 만드는 문법
// private final 필드
// 전체 생성자
// getter (accessToken(), refreshToken())
// equals()
// hashCode()
// toString()
// 를 자동으로 만들어 줌.
// 단, 생성 후 값 변경 불가
// 토큰, 응답 등 값이 변경 안되는 객체에 최고로 안전.
// Jackson / Spring 기본 지원
//record는 불변이라서 멀티스레드 환경에서도 안전
//토큰처럼 절대 변경되면 안되는 값에 적합
//setter가 없어서 실수로 값 바뀌는 사고 방지 가능
public record Tokens(String accessToken, String refreshToken) {}
- record 사용 → 불변 객체, 자동으로 다음 제공:
private final 필드
- 전체 생성자
- getter (
accessToken(), refreshToken())
equals(), hashCode(), toString()
- 값 변경 불가 → 멀티스레드 환경에서도 안전
2. 특징 및 장점
- 불변성: 토큰 값은 절대 변경되면 안되므로 안전
- 멀티스레드 안전: 동시에 여러 스레드에서 접근해도 상태 변경 위험 없음
- 실수 방지: setter 없음 → accidental mutation 방지
- Jackson / Spring 기본 지원 → JSON 직렬화/역직렬화 자동 처리
- DTO 역할 특화 → 응답 전용, 비즈니스 로직 없음
3. 설명 포인트
- 로그인/토큰 갱신 후 accessToken과 refreshToken을 클라이언트에 반환
- record를 사용하면 DTO 코드가 간결하고 안전하며, 토큰처럼 절대 바뀌면 안 되는 값에 적합