해결된 질문
작성
·
178
1
컴포넌트 스캔과 의존관계 자동 주입 시작하기 강의 부분입니다.
강의 자료를 보면 Autowired로 MemberRepository가 주입 되지도 않은 상태에서 스프링 빈에 인스턴스부터 등록되는 것을 봤습니다.
https://www.inflearn.com/questions/656720
이 분의 질문이 제 질문과 동일합니다.
로그를 봐도 인스턴스가 먼저 생성되고 @Autowired는 나중에 수행되던데,
인스턴스가 생성되려면 생성자를 통해야 하는데 유일한 생성자에 @Autowired가 달려 있고, 기본 생성자는 아예 없어서
어떻게 그게 가능한지 궁금합니다.
지금으로서는 ‘스프링이 어떻게든 되게 해주겠지’라고 생각하고 있는데, 이정도 의문은 그냥 넘어가도 된다면 된다고 해주셔도 좋을 것 같습니다.
+우연히 발견한 바로는 코드에서 @Autowired를 주석 처리해도 테스트가 정상 동작하던데 이것도 스프링이 알아서 해 주는 부분인가요?
답변 1
2
안녕하세요, 이기정 님! 공식 서포터즈 codesweaver 입니다.
자바의 '리플렉션' 을 검색하시면 원하시는 답을 얻으실 수 있어요.
리플렉션을 이용하면 어떤 생성자를 가지고 있는지, 생성자가 어떤 파라미터를 받는지, 메소드는 무엇이 있는지등을 알아낼 수 있는데요, 사실 이런 기능은 OOP 관점에서 말도 안되는 기능이라고 볼 수 있습니다.
그래서 이런 리플렉션을 현업에서 직접 구현할 기회는 거의 없고, 프레임워크를 만들게 되면 유용하게 이용하겠지요 :)
아래의 링크 설명도 참조 부탁드립니다.
https://velog.io/@yeon/Reflection%EC%9D%B4%EB%9E%80
감사합니다.