스프링 컨테이너

jooog·2022년 3월 31일
0

스프링

목록 보기
21/26

📌 스프링 컨테이너(Spring Container)

스프링 컨테이너(Spring Container)란 Bean의 저장소를 말하며 Bean을 저장하고 관리한다(생성, 소멸,연결)

BeanFactory는 Bean을 생성, 연결하는 등 기본 기능을 정의한 인터페이스고 ApplicationContext는 BeanFactory를 확장해서 여러 기능을 추가로 정의한 것을 말한다.
스프링 컨테이너와 ApplicationContext는 거의 같은 말이다.

ApplicationContext는 다양한 종류의 구현체를 제공하며 설정 방법에 따라 xml, java code로 크게 나뉘며 web인지 아닌지의 여부에 따라 크게 4개의 종류로 나뉜다. 요즘 추세로는 자바 코드를 많이 사용한다.

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

스프링 컨테이너 생성

ApplicationContext는 인터페이스스프링 컨테이너라고 하며 new AnnotationConfigApplicationContext(AppConfig.class) 클래스는 ApplicationContext의 구현체다.

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 하고 위의 코드에서는 AppConfig.class 로 구성 정보를 지정했다.

스프링 빈 등록

빈 이름은 메서드 이름을 사용하지만 빈 이름을 직접 지정해줄 수도 있다. 반환 객체에는 빈 객체에 들어간다.

의존관계 설정

설정정보를 참조해서 의존관계를 설정한다.

📌 컨테이너에 등록된 빈 조회하기

ac.getBeanDefinitionNames()으로 스프링에 등록된 모든 빈 이름을 조회하고 ac.getBean() 으로 빈 이름을 통해 빈 객체(인스턴스)를 조회한다.

public class ApplicationContextInfoTest {

    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);
        }
    }

}

이 글은 김영한님의 스프링 핵심 원리 강의를 듣고 정리한 내용입니다.

0개의 댓글