본문 바로가기
Programming/Spring

[Spring 🤔] - @Autowired vs @RequiredArgsConstructor

by jenlve 2024. 2. 22.

궁금증 배경 )

스프링 부트 핵심 가이드 책을 보면서, 책에선 @Autowired를 통해 외부 인터페이스의 생성자를 작성하는 반면 나는 @RequiredArgsConstructor로 외부 인터페이스 의 생성자코드를 생략해서 쓰고 있었다. 이 둘의 차이점은 뭐고 사실 정확히 어떤 이유로 사용하는 이참에 알아보기 위해 조사해보게 되었다.!

 


 

Q1. @Autowired와 @RequiredArgsConstructor의 공통점, 사용 목적은?

A :

@Autowired와 @RequiredArgsConstructor은 둘 다 의존성 주입!(Dependency Injection)을 달성하기 위한 목표를 가지고 있다. 

 

Q2. @Autowired와 @RequiredArgsConstructor의 차이점은?

A :

'@Autowired'는 스프링이 타입에 맞는 빈을 자동을 주입하도록 해주는 역할을 한다. 주로 필드, 생성자, 세터 메서드를 사용할 수 있게 해주며 생성자 주입의 경우 @Autowired와 함께 작성을 해줌으로써 의존성을 주입할 수 있다. 

'@RequiredArgsConstructor'는 롬복(Lombok)의 라이브러리로, final 필드나 @NotNull이 붙은 필드에 대한 생성자를 자동으로 생성해준다. 이 어노테이션을 통해 우리는 생성자 작성을 생략할 수 있어 코드가 간결해진다. (단, 롬복 라이브러리를 프로젝트에 추가해줘야 한다.)