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