Spring | 어노테이션으로 DI 구현 | App 클래스 수정

이제 생성한 Bean 설정 클래스를 이용하여 Bean을 얻을 수 있도록 응용 프로그램 클래스를 수정하자. App.java를 아래와 같이 소스 코드를 작성한다.

package com.devkuma.spring;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
public class App {
 
    public static void main(String[] args) {
        ApplicationContext app = new
            AnnotationConfigApplicationContext(SampleBeanConfig.class);
        SampleBeanInterface bean1 = 
            (SampleBeanInterface)app.getBean(SampleBeanInterface.class);
        System.out.println(bean1);
    }
}

실행 해보면 “SampleBean [message=“설정 클래스에서 만든 인스턴스입니다.]“라는 텍스트가 출력된다. SampleBeanConfig 클래스의 @Bean 지정된 메서드 (sampleBean)로 new를 이용해서 인스턴스를 얻을 수 있고, 이를 이용되고 있는 것을 알 수 있을 것이다.

이번에는 bean.xml를 이용한 경우와는 조금 다른 방식으로 하고 있다. 간단하게 정리해 보겠다.

1. ApplicationContext를 얻기

ApplicationContext app = new
    AnnotationConfigApplicationContext (SampleBeanConfig.class);

먼저, ApplicationContext 인스턴스를 만든다. 이것은 동일하지만, 잘 보면 사용하고 있는 클래스가 다르다. 이번에는 “AnnotationConfigApplicationContext"라는 클래스의 인스턴스를 생성하고 있다.

이것은 Bean 설정 클래스를 이용하여 ApplicationConfig을 생성하기 위한 것이다. 인수에는 설정 클래스의 Class 값을 지정한다. 이것으로 그 설정 클래스에서 Bean을 관리하는 ApplicationContext가 만들어진다.

2. Bean을 얻기

SampleBeanInterface bean1 =
    (SampleBeanInterface) app.getBean (SampleBeanInterface.class);

Bean을 얻는 것은 지금까지와 동일하다. “getBean"메소드를 사용하여 인수 꺼내 Bean의 Class를 지정하기만 하면 된다. 이것으로 해당 Bean의 인스턴스를 얻을 수 있다.

인수에는 얻을 Bean 클래스의 Class 값을 지정한다. 이것으로 지정 클래스의 Bean을 얻을 수 있다.