인프런 커뮤니티 질문&답변

pbs0216님의 프로필 이미지
pbs0216

작성한 질문수

스프링 핵심 원리 - 기본편

롬복과 최신 트랜드

@RequiredArgsConstructor도 @Autowired 기반인가요?

작성

·

72

0

@RequiredArgsConstructor를 통한 의존관계 자동 주입이 결국 @Autowired를 사용한 것인가요

답변 2

0

안녕하세요. pbs0216님, 공식 서포터즈 OMG입니다.

@RequiredArgsConstructor는 생성자를 만들어주는 어노테이션입니다.

그리고 이렇게 생성된 생성자를 통해 생성자 주입이 발생합니다.

아래 (1) ~(3)은 모두 생성자 주입이 발생하는 동일한 코드입니다.

각각 어떤 차이가 있는지 확인하시면 설명드리는 내용을 이해하실 수 있을거라 생각합니다.

 

(1) @RequiredArgsConstructor

@RequiredArgsConstructor
public class MemberService {

    private final MemberRepository memberRepository;
}

(2) 생성자를 직접 코드로 작성


public class MemberService {

    private final MemberRepository memberRepository;

    @Autowired
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

 

(3) @Autowired 생략 가능(생성자 1개일 때)


public class MemberService {

    private final MemberRepository memberRepository;

    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. pbs0216님의 질문에 대해 도움을 드릴 수 있는 정보를 찾았습니다.

질문하신 내용은 @RequiredArgsConstructor를 사용한 의존성 주입이 내부적으로 @Autowired를 사용하는 것인지에 대해 궁금하신 것으로 이해됩니다. 이에 대한 답변은 [“@RequiredArgsConstructor 를 사용하면 @Autowired도 같이 적용되나요?”] 에서 확인하실 수 있습니다.

해당 질문에 대한 답변 요약:
- @RequiredArgsConstructor는 final 키워드나 @NonNull이 붙은 필드에 대한 생성자를 자동으로 생성해줍니다.
- 스프링에서는 생성자가 단 하나 있을 때 @Autowired 어노테이션을 생략할 수 있으며, 스프링은 이 경우 자동으로 의존성을 주입합니다. 즉, @RequiredArgsConstructor가 사용된다면, 해당 클래스에 대해 스프링은 자동으로 생성된 생성자를 통해 의존성 주입을 처리합니다.
- 이는 @Autowired 어노테이션이 명시적으로 쓰이지 않더라도 스프링은 생성자 주입 방식을 통해 의존성 주입을 자동으로 수행하게 합니다.

따라서, @RequiredArgsConstructor를 사용한 의존관계 자동 주입은 결국 생성자 주입 방식을 사용하는 것이며, 스프링은 생성자가 하나만 있을 경우 내부적으로 @Autowired를 사용하는 것과 동일하게 작동한다고 볼 수 있습니다.

질문 링크: “@RequiredArgsConstructor 를 사용하면 @Autowired도 같이 적용되나요?”

위 내용이 pbs0216님의 질문에 대한 답변이 되었기를 바랍니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

pbs0216님의 프로필 이미지
pbs0216

작성한 질문수

질문하기