20250808 - 학습일지 : Annotation

창훈·2025년 8월 8일

Annotation 을 "주석"이라고 번역하기에는 문제가 있음
TTA에서는 "원시데이터를 보강하는 프로세스. 정적 또는 동적 객체, 수행 작업, 환경조건과 같은 원시데이터를 설명하는 메타데이터를 포함"이라고 설명하고 있으나 조금 많이 부족한 설명을 참조한 것 같음(출처 : 단체표준 TTAK.KO-10.1498-Part1 자율주행 AI 학습용 데이터 참조 모델 - 제1부: 일반 요구사항)

1. @RequiredArgsConstructor (Lombok)

  • Lombok에서 제공하는 어노테이션
  • 클래스의 final 필드 또는 @NonNull 필드만을 매개변수로 받는 생성자를 자동으로 생성
  • 불변 객체 설계와 Spring의 생성자 기반 의존성 주입에 매우 유용(먼 개뼉다구 같은 소리야).
  • 적용대상
    - final 필드
    - @NonNull이 붙은 필드
    즉, 필수로 초기화되어야 하는 필드들만 생성자의 매개변수로 포함.
@RequiredArgsConstructor
public class UserService {
    private final UserRepository userRepository;
    private final PasswordEncoder passwordEncoder;
    private String optionalField;
}
// 위 코드는 다음과 같은 생성자를 자동으로 생성한다.
public UserService(UserRepository userRepository, PasswordEncoder passwordEncoder) {
    this.userRepository = userRepository;
    this.passwordEncoder = passwordEncoder;
}
- @Null 필드 포함
@RequiredArgsConstructor
public class EmailService {
    @NonNull
    private String smtpServer;
    private String senderName;
}

public EmailService(String smtpServer) {
if (smtpServer == null) {
throw new NullPointerException("smtpServer is marked non-null but is null");
}
this.smtpServer = smtpServer;
}

profile
한줄소개불가

0개의 댓글