스프링 기본 - 섹션4. 스프링 컨테이너와 스프링 빈
CS/김영한 스프링 강의

스프링 기본 - 섹션4. 스프링 컨테이너와 스프링 빈

앞의 섹션3 마지막에 @Bean으로 등록하면 스프링 실행 시 처음에 @Bean으로 등록된 모든 함수를 순회해서 등록한다고 했는데, 그 개념과 직접 확인하는 과정이다.

 

컨테이너에 이름을 키, 객체를 값으로 저장하고 ApplicationContext의 .getBean으로 가져와서 사용하는 것.

 

조회는 이름으로, 타입으로, 구체 타입으로 등 여러 방법으로 조회할 수 있다. 단지 타입으로 했을 시 겹치는게 있으면 에러 띄워서 중지하고 하는게 있음. 이런건 안겹치게 잘 하면 된다. 애초에 겹치면 이상하게 설계한거임.

상속 타입으로도 조회 가능

 

사실 지금까지 ApplicationContext로 가져온 것 또한 인터페이스로 가져온 것이었고, 스프링 컨테이너의 최상위 인터페이스는 BeanFectory. 여기에 Bean에 대한 아주 기본적인 함수들 (getBean)이 들어있고, ApplicationContext엔 추가 기능이 부여된 방식.

 

 

 

예시코드에서 MemberRepository 인터페이스를 만들고 MemoryMemberRepository, ~~~MemberRepository로 여러개를 만들어서 사용할 수 있는 것처럼, 스프링이 먼저 그렇게 만들었다. 그래서 자바의 class로도 설정 가능하고, xml로도 설정 가능하고 함. 즉, 돌아가는 구현은 알아서 하고 인터페이스만 갖다 쓰면 된다.

자세히는 파일을 읽으면 그 각각 요소들을 BeanDefinition으로 만들어서 그걸 읽어들이고 한다.