스프링 컨테이너

justindevcode·2023년 4월 27일
0

스프링부트

목록 보기
29/39
post-thumbnail

스프링 컨테이너


스프링 컨테이너 생성

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

ApplicationContext 를 스프링 컨테이너라 한다.
ApplicationContext 는 인터페이스이다.

이렇게 등록을 하면 스프링 컨테이너에 AppConfig.class에 들어있는 모든 클레스들을 스프링 빈에 등록한다.
여기에는 빈이름과 실제 객체가 키벨류처럼 들어있다.


AnnotationConfigApplicationContext ac = new
AnnotationConfigApplicationContext(AppConfig.class);
 @Test
 @DisplayName("모든 빈 출력하기")
 void findAllBean() {
 String[] beanDefinitionNames = ac.getBeanDefinitionNames();
 for (String beanDefinitionName : beanDefinitionNames) {
 Object bean = ac.getBean(beanDefinitionName);
 System.out.println("name=" + beanDefinitionName + " object=" +
bean);
 }
 }

이런식으로 실제로 생성되어있는 객체를 꺼낼수 있다.

ac.getBean(빈이름, 타입)
ac.getBean(타입)
ac.getBeansOfType() 을 사용하면 해당 타입의 모든 빈을 조회할 수 있다.
부모 타입으로 조회하면, 자식 타입도 함께 조회한다.

BeanFactory와 ApplicationContext

BeanFactory
스프링 컨테이너의 최상위 인터페이스다. 가장기본

ApplicationContext
BeanFactory 기능을 모두 상속받아서 제공한다. + 수 많은 부가기능
(국제화 , 환경변수, 애플리케이션 리소스, 편리한 리소스 조회)

ApplicationContext의 구현체로

  • AnnotationConfigApplicationContext(어노테이션)
  • GenericXmlApplicationContext(Xml)

이런종류 선택해서 사용할수있다.


스프링 빈 설정 메타 정보 - BeanDefinition

위에 여러 방식 사용할수 있는게 어노테이션 기반, Xml기반등등의 파일을 읽어서 결과를 각 구현체에 넘기는 애가 있는것이다.


결론적으로

우리가 만든 의존관계에 대한 클레스를 스프링에 넘겨줬을때 어떻게 동작하고 가지고있고 사용할 수 있냐를 알아봤다.

profile
("Hello World!");

0개의 댓글