네, 맞습니다. 요즘은 @Autowired를 사용하는 대신, 생성자 주입 방식을 사용하는 것이 더 권장되는 방법입니다. 그리고 @RequiredArgsConstructor를 활용하면, final로 선언된 필드에 대해 자동으로 생성자를 만들어주므로 더욱 간결하고 안전한 코드를 작성할 수 있습니다.

@Autowired 대신 생성자 주입을 사용할까?

  1. 불변성 유지: final 키워드를 사용하여 필드를 불변으로 만들 수 있습니다. 이로 인해 객체가 생성된 후 해당 필드가 변경될 수 없으므로, 코드의 안정성이 높아집니다.
  2. 테스트 편리성: 생성자 주입을 사용하면, 필요한 의존성을 직접 생성자에 전달할 수 있어 단위 테스트가 더 쉬워집니다. @Autowired는 스프링 컨테이너를 필요로 하지만, 생성자 주입은 테스트 시에 더 유연하게 사용할 수 있습니다.
  3. 순환 참조 방지: 생성자 주입을 사용하면, 순환 참조(A가 B를 참조하고, B가 A를 참조하는 구조)를 컴파일 타임에 발견할 수 있습니다. @Autowired는 순환 참조를 런타임에야 발견할 수 있습니다.
  4. 필드 주입보다 권장: 스프링에서 권장하는 의존성 주입 방식 중 생성자 주입이 가장 많이 사용됩니다. 필드 주입은 권장되지 않는 방식이며, 코드 테스트와 유지보수에 있어 비효율적일 수 있습니다.

@RequiredArgsConstructor를 사용하는 방식

@RequiredArgsConstructor는 롬복(Lombok)을 활용해 final 필드에 대해 생성자를 자동으로 생성해주는 어노테이션입니다. 이 방식은 코드의 가독성을 높이고, 생성자 주입의 장점을 유지할 수 있습니다.