스프링 컨테이너와 빈

Legday_Dev·2023년 8월 28일
0

Spring

목록 보기
2/14

스프링 컨테이너


ApplicationContext applicationContext = 
								new AnnotationConfigApplicationContext(AppConfig.class); 
  • 스프링 컨테이너는 ApplicationContext 라는 인터페이스를 뜻한다.

    정확히는 BeanFactory가 맞다. 하지만 개발자가 스프링 빈과 컨테이너를 사용하는 기능은 ApplicationContext 라는 구현체가 다 해주기 때문에 ApplicationContext를 스프링 컨테이너로 알고있으면 된다.

  • 스프링 컨테이너는 AppConfig.class 같은 설정정보를 바탕으로 스프링 빈 저장소에 빈 이름과 빈 객체에 등록을 해준다.

  • 위와 같이 스프링 컨테이너는 스프링 빈에 등록이 되면 설정 정보를 참고해서 의존관계 주입(DI) 한다.

BeanFactory 와 ApplicationContext


BeanFactory

  • 정확히는 BeanFcatory 인터페이스가 스프링 컨테이너의 실체이다.
  • 하지만 개발자가 편리하게 사용할 수 있는 부가기능 인터페이스가 많아서 BeanFactory 를 직접 건들지 않아도 된다.
  • BeanFacotry 가 최상위 인터페이스이다.
  • MessageSource
    • 메시지 소스를 활용한 국제화 기능
    • 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력
  • Environmentcapable
    • 환경변수 : 로컬, 개발, 운영들을 구분해서 처리
  • ApplicationEventPublisher
    • 이벤트를 발행하고 구독하는 모델을 편리하게 지원
  • ResourceLoader
    • 파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회

BeanDefinition


💡스프링은 다양한 설정 형식을 지원한다. 이런 유연한 설계가 가능한 이유는 BeanDefinition 이라는 추상화 덕분이다.

  • 스프링 컨테이너는 개발자가 AppConfig.class 를 만들었는지 AppConfig.xml 을 만들었는지 몰라도 된다.
  • BeanDefinition 을 빈 설정 메타정보라 한다.
    • @Bean 하나씩 메타 정보가 생성된다.
  • 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다.
profile
백엔드개발자

0개의 댓글