Spring/스프링 핵심 원리 - 기본편

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

한 면만 쓴 종이 2022. 8. 4. 01:40

[인프런] 스프링 핵심 원리 - 기본편

 

 

< 스프링 빈 의존관계 설정 >

 

스프링 빈 조회

스프링 빈을 찾는 가장 기본적인 조회 방법

ac.getBean(빈 이름, 타입)
ac.getBean(타입)

📎조회 대상 스프링 빈이 없으면 발생하는 예외

NoSuchBeanDefinitionException: No bean named 'xxxxx' available

 

📎타입으로 조회할 때 같은 타입의 스프링 빈이 두 개 이상 있으면 오류 발생 => 빈 이름 지정하기

ac.getBeanOfType()

    ↪ 해당 타입의 모든 빈 조회 가능

 

 

스프링 빈을 조회할 때 상속관계

  • 부모 타입으로 조회하면, 자식 타입도 모두 함께 조회됨 => Object로 조회하면 모든 스프링 빈 조회함 ⭐
  •  

📍BeanFactory와 ApplicationContext

      📎BeanFactory는 스프링 컨테이너의 최상위 인터페이스

      📎ApplicationContext는 BeanFactory의 기능을 상속받고 편리한 부가 기능을 추가 제공함

      📎보통 ApplicationContext를 사용하고 BeanFactory와 ApplicationContext를 모두 스프링 컨테이너라 함

 

ApplicationContext가 제공하는 부가기능

  • MessageSource
  • EnvironmentCapable
  • ApplicationEventPublisher
  • ResourceLoader

 

지금까지는 애노테이션 기반 자바 코드 설정을 사용함

XML 설정 사용 맛보기

  • XML을 사용하면 컴파일 없이 빈 설정 정보 변경 가능
  • 애노테이션 방법과 구조는 거의 비슷함

 

📍정리

  • 스프링이 다양한 설정 형식을 지원할 수 있는 이유: BeanDefinition 으로 추상화해서 사용하기 때문⭐
  • 우리가 보통 @Bean으로 사용하는 건 BeanFactory 방식