본문 바로가기

Programming/Spring Framework

@RequiredArgsConstructor 어노테이션

 

@RequiredArgsConstructor 어노테이션은 롬복(Lombok) 에서 제공하는 어노테이션이다.

- 필수 의존성 (final 또는 @NotNull 필드)에 대해 자동으로 생성자를 만들어주는 기능을 한다.

 

 

여러 의존성 주입이 있는데 @RequiredArgsConstructor어노테이션을 사용하는 이유로는

  1. 불변성 유지 : final 필드를 초기화하지 않으면 컴파일 에러 -> 안전한 설계 가능하다.
  2. 스프링 생성자 주입에 적합 : final 필드만 주입되도록 자동 생성자 생성한다.
  3. 코드 간결화 : 반복적인 생성자 코드를 줄일 수 있다.
  4. 테스트 용이성 향상 : 의존성을 명시적으로 주입받기 때문에 mocking 등 용이하다.

등이 있다.

 

비교하자면 생성자 주입의 예시는

public class MyService {
    private UserRepository userRepository;

    public setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

 

필드 주입

public class MyService {

    @Autowired
    private UserRepository userRepository;

}

 

세터 주입

public class MyService {

    private UserRepository userRepository;

    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

 

 

RequiredArgsConstructor어노테이션을 사용하면

@RequiredArgsConstructor
public class MyService {
    private final UserRepository userRepository;
 
}

간단하게 작성할 수 있다.

 

주의할 점으로는

이 롬복은 final 또는 @NotNull 필드에 대해 생성자를 만들어주고

final이 아닌 필드는 포함되지 않는다는 점이다. setter나 별도 초기화가 필요하다.