Home 스프링 프레임워크 - 2.1. IoC 컨테이너: 2. 컨테이너 개요
Post
Cancel

스프링 프레임워크 - 2.1. IoC 컨테이너: 2. 컨테이너 개요

스프링 프레임워크 문서 읽기
    챕터 1. 개요
    챕터 2. 핵심 기술
      2.1. IoC 컨테이너
        2.1.1 스프링 IoC 컨테이너와 빈즈Beans에 대한 소개
        2.1.2. 컨테이너 개요
        2.1.3. 빈Bean 개요
        2.1.4. 의존 관계Dependencies
        2.1.5. 빈 스코프Bean Scopes
    챕터 5. 웹 서블릿 스택
      5.1. 스프링 웹 MVC
        5.1.3. 애너테이션Annotated 컨트롤러
3/7



1.2. 컨테이너 개요

    org.springframework.context.ApplicationContext 인터페이스는 스프링 IoC 컨테이너이다. 즉, 빈즈를 인스턴스화하고 설정하고 모으는 역할을 한다. 이 컨테이너는 어떤 객체를 인스턴스화하고 설정하고 모을지를 설정 메타데이터configuration metadata를 읽어들여 해당 명령어를 얻는데, 이 설정 메타데이터는 XML, 자바 애너테이션, 자바 코드로 표현되어 있다. 즉, 이것을 통하여 애플리케이션을 만들어낼 객체들, 그리고 그 객체들 사이의 수많은 상호 의존관계를 표현할 수 있다.

    그간 XML을 이용하여 설정 메타데이터를 정의해오고 있지만, 다른 방법으로 컨테이너가 자바 애너테이션 또는 코드를 메타데이터 형식으로 이용하도록 할 수도 있다. 이러한 경우엔 XML 설정의 문서 양은 크게 줄어든다.

    애플리케이션의 클래스들은 설정 메타데이터를 통하여 결합되는데, 이는 ApplicationContext가 생성 및 초기화된 이후에 완전하게 설정되어 시스템이나 애플리케이션을 실행 가능하도록 하기 위함이다.

1.2.1. 메타데이터 설정Configuration

    스프링 IoC 컨테이너는 설정 메타데이터 형식으로 읽어들이는데, 이 설정 메타데이터 덕분에 애플리케이션 개발자는 스프링 컨테이너가 어떻게 객체들을 인스턴스화하고 설정하고 모을지를 알 수 있다.

    스프링 설정에는 최소한 하나의 빈bean 정의가 존재하며 보통은 여러 개가 있는데, 이 정의는 컨테이너가 관리한다.
자바를 이용한 설정은 일반적으로 @Configuration이 붙은 클래스에서 @Bean이 붙은 메서드를 이용한다.

    빈 정의는, 애플리케이션을 구성하는 실제 객체들에 대응된다.

1.2.2. 컨테이너 인스턴스화하기

1.2.3. 컨테이너 사용

    ApplicationContext 인터페이스는 서로다른 빈즈와 그들의 의존관계 등록을 유지해주는 발전된 팩토리 패턴이다. T getBean(String name, Class<T> requiredType) 메서드를 이용하여 찾고자 하는 빈즈의 인스턴스를 찾아올 수 있다.
    아래의 예제와 같이, ApplicationContext를 통하여 빈 정의를 접근하여 읽을 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
// create and configure beans
ApplicationContext context 
            = new ClassPathXmlApplicationContext("services.xml",
"daos.xml");

// retrieve configured instance
PetStoreService service 
            = context.getBean("petStore", PetStoreService.class);

// use configured instance
List<String> userList 
            = service.getUsernameList();
Contents