본문 바로가기
Backend, Server/Spring

[스프링] 스프링 컨테이너와 스프링 빈

by ggyongi 2021. 12. 25.
반응형

스프링 컨테이너의 생성

/스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

- ApplicationContext는 인터페이스이며 이를 스프링 컨테이너라 함

- 인터페이스이기 때문에 XML기반으로 만들 수도 있고, 어노테이션 기반 클래스로 만들 수도 있음

      (다양한 설정 형식을 지원할 수 있는 이유는 BeanDefinition이라는 추상화가 있기 때문)

 

- 스프링 컨테이너 안에는 스프링 빈 저장소가 있고 빈 이름빈 객체가 저장된다.

- 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입한다.

 

- ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속받음

- 빈을 관리하고 검색하는 기능은 BeanFactory에서 제공해주고 ApplicationContext 인터페이스는 다양한 부가기능을 위해 여러가지 다른 인터페이스를 상속받게 된다.

 

스프링 빈 조회

- 이름으로 조회 : ac.getBean(빈이름, 타입)

- 타입으로 조회 : ac.getBean(타입)

 

동일한 타입이 둘 이상

- 조회 대상 스프링 빈이 없으면 예외가 발생한다.(NoSuchBeanDefinitionException)

- 여기서 타입으로 조회하면 둘 이상의 스프링 빈이 조회될 수 있어 오류가 발생한다.

  이때는 빈 이름 지정으로 해결 할 수 있다.

- ac.getBeansOfType()을 사용하면 해당타입의 모든 빈을 조회할 수 있다.

 

상속 관계

- 부모 타입으로 조회하면 자식 타입도 함께 조회

- 그래서 만약 Object 타입으로 조회하면 모든 스프링 빈이 조회됨

 

 

 

------------------------

참고 : 인프런 김영한님 강의(스프링 핵심원리 기본편)

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글