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

초보개발·2021년 12월 9일
0

Spring

목록 보기
8/37

스프링 컨테이너 생성

// 자바 설정 클래스 기반으로 스프링 컨테이너 생성
// AnnotationConfigApp..은 ApplicationContext의 구현체이다.
ApplicationContext ac = new AnnotationConfigApplicationContext(
				AppConfig.class
			);
  • ApplicationContext은 스프링 컨테이너며 인터페이스이다.
  • 스프링 컨테이너는 xml으로 만들 수 있으나 요즘은 annotation 기반의 자바 설정 클래스로 만든다.(스프링 부트가 annotation 기반으로 작동하기 편리하게 되어있기 때문)

    참고
    스프링 컨테이너를 더 정확하게 부르면, BeanFactory, ApplicationContext로 구분해서 말한다.
    BeanFactory를 직접 사용하는 경우는 거의 없어서 일반적으로 ApplicationContext를 스프링 컨테이너라고 생각하면 된다.

스프링 컨테이너의 생성 과정

1. 스프링 컨테이너 생성

  • new AnnotationConfigApplicationContext(AppConfig.class)
  • 스프링 컨테이너를 생성할 때, 구성 정보를 지정해 주어야 한다.
    • AppConfig.class를 구성 정보로 지정

2. 스프링 빈 등록

  • 스프링 컨테이너는 매개변수로 넘어온 설정 클래스 정보를 이용해 스프링 빈을 등록한다.(AppConfig.class에서 @Bean 애노테이션이 있는 메서드를 호출하여 반환된 객체를 등록)

3. 스프링 빈 의존관계 설정

  • 스프링 컨테이너는 설정 정보를 기반으로 DI를 해준다.

스프링 빈 조회하기

  1. 모든 빈 출력하고 싶을 경우
  • ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈의 이름을 조회
  • ac.getBean() : 빈 이름으로 객체를 조회
  1. 특정 조건에 맞는 결과를 출력하고 싶은 경우
  • 사용자가 정의한 빈
    beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION
  • 스프링이 내부에서 사용하는 빈
    beanDefinition.getRole() == BeanDefinition.ROLE_INFRASTRUCTURE

0개의 댓글