묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
@Autowired를 제거해도 의존 관계 주입이 가능한지
[질문 내용]질문 1.ComponentScan과 Autowired를 이용한 스프링 빈 등록 과정을 다음과 같이 이해해보았는데 틀린 내용이 있을까요? 특히 2,3,4 과정이 자세히 알고 싶습니다. @Component 애노테이션이 달린 클래스의 이름을 갖는 빈( 빈 껍데기 )을 등록빈으로 등록된 클래스의 생성자를 실행이 때 생성자의 매개변수가 적은 순서대로 실행 ( MemoryMemberRepository,RateDiscountPolicy -> MemberServiceImpl -> OrderServiceImpl )@Autowired 애노테이션이 달려있다면 생성자의 매개변수 클래스 타입을 확인한다. 해당 클래스 타입을 등록되어 있는 스프링 빈에서 가져온다.생성자를 실행하여 의존 관계 주입을 받은 인스턴스를 등록되어 있는 빈에 넣는다. 질문 2 .3~4 과정에서 @Autowired 애노테이션이 없다면 의존 관계 주입이 이루어지지 않을 것이라고 생각해서 MemberServiceImpl에 @Autowired를 제거해보았는데 MemoryMemberRepository 빈을 알아서 가져와서 의존관계 주입을 받게 되는데 어떻게 주입 받는 것인지 궁금합니다. Dependencies Diagram을 확인해보았더니 @Autowired를 통해서 주입 받는 orderServiceImplr과는 다르게 depends on 이라고 적혀있는데 MemoryMemberRepository가 @ComponentScan으로 빈으로 등록되어서 스프링이 자동으로 알맞은 의존 관계 주입을 해준 것인가요?
-
미해결스프링 핵심 원리 - 기본편
안녕하세요 AppConfig 관련 질문 드립니다.
안녕하세요 선생님 강의를 듣던 도중 의문이 생겨 질문 드립니다. 의존 관계 주입에 대해 강의를 듣던 도중 AppConfig를 활용하여 각 추상객체에 구현객체를 만들어 주입함으로서, OCP 와 DIP 위반을 해결하셧는데요, 여기서 이렇게 각 MemberService와 OrderService에 대한 구현체 생성을 하는 과정에서 new MemoryMemberRepository라는 코드가 중복이 되는것이 마음에 걸려, 아래처럼 한번의 생성을 통해 두 구현체에 한번에 주입하는 코드로 변경 해 보았는데요. 먼저, 이렇게 코드를 수정하여도, MemberApp 또는 OrderApp 코드는 잘 실행 되는데요, 여기서 저의 질문은, 제가 생각한것처럼 하는 방법도 추후에 다른 문제를 야기 시킬 가능성이 있는지 궁금합니다..