@RequiredArgsConstructor

itonse·2023년 11월 13일
0

Spring

목록 보기
3/8

@RequiredArgsConstructor 란?

  • Lombok 라이브러리에서 제공하는 어노테이션 입니다.
  • final 또는 @NonNull이 붙은 필드들을 인자로 받는 생성자를 자동으로 생성해줍니다. (생성자 주입)
  • 코드를 간결하게 만들고, 생성자를 통한 명시적인 의존성 주입을 용이하게 합니다.

@Autowired 보다 사용이 권장되는 이유

아래 이유들이 있다.

1. 순환 참조 방지

  • 순환 참조가 있는 경우 애플리케이션 구동 시 오류를 발생시키며 이를 방지합니다.

2. final 선언이 가능 (주입된 객체의 불변성 보장)

  • final 필드에 대한 생성자를 자동 생성함으로써, 의존성 객체들의 불변성을 보장합니다.

3. 더욱 깔끔한 코드

  • 생성자 코드를 직접 작성할 필요가 없어 코드가 간결해집니다.

4. 테스트 코드 작성 용이

  • 테스트 시에 Mock Object 또는 테스트에 필요한 객체를 쉽게 주입할 수 있습니다.

[코드 예시]

UserService가 UserRepository에 의존하고 있는 경우입니다.

@Service
@RequiredArgsConstructor   // 어노테이션 추가
public class UserService {
    private final UserRepository userRepository;  

    // 사용자 관련 비즈니스 로직...
}

여기서 @RequiredArgsConstructorfinal로 선언된 UserRepository 필드에 대한 생성자를 자동으로 생성합니다. 이렇게 하면 수동으로 생성자를 작성할 필요가 없어 코드가 더 간결해집니다.

0개의 댓글

관련 채용 정보