앞의 섹션3 마지막에 @Bean으로 등록하면 스프링 실행 시 처음에 @Bean으로 등록된 모든 함수를 순회해서 등록한다고 했는데, 그 개념과 직접 확인하는 과정이다.
컨테이너에 이름을 키, 객체를 값으로 저장하고 ApplicationContext의 .getBean으로 가져와서 사용하는 것.
조회는 이름으로, 타입으로, 구체 타입으로 등 여러 방법으로 조회할 수 있다. 단지 타입으로 했을 시 겹치는게 있으면 에러 띄워서 중지하고 하는게 있음. 이런건 안겹치게 잘 하면 된다. 애초에 겹치면 이상하게 설계한거임.
상속 타입으로도 조회 가능
사실 지금까지 ApplicationContext로 가져온 것 또한 인터페이스로 가져온 것이었고, 스프링 컨테이너의 최상위 인터페이스는 BeanFectory. 여기에 Bean에 대한 아주 기본적인 함수들 (getBean)이 들어있고, ApplicationContext엔 추가 기능이 부여된 방식.
예시코드에서 MemberRepository 인터페이스를 만들고 MemoryMemberRepository, ~~~MemberRepository로 여러개를 만들어서 사용할 수 있는 것처럼, 스프링이 먼저 그렇게 만들었다. 그래서 자바의 class로도 설정 가능하고, xml로도 설정 가능하고 함. 즉, 돌아가는 구현은 알아서 하고 인터페이스만 갖다 쓰면 된다.
자세히는 파일을 읽으면 그 각각 요소들을 BeanDefinition으로 만들어서 그걸 읽어들이고 한다.
'CS > 김영한 스프링 강의' 카테고리의 다른 글
스프링 기본 - 섹션6. 컴포넌트 스캔 (0) | 2023.07.03 |
---|---|
스프링 기본 - 섹션5. 싱글톤 컨테이너 (0) | 2023.07.03 |
스프링 기본 - 섹션2,3. 스프링 핵심 원리 이해 - 예제 만들기, 객체 지향 원리 적용 (0) | 2023.07.02 |
스프링 기본 - 섹션1 객체 지향 설계와 스프링 (0) | 2023.06.30 |
스프링 입문 - 섹션7 AOP (0) | 2023.06.29 |