2021 Spring Study

Spring 5. Application Context 사용하기

Yerim Kim 2021. 1. 1. 22:05

 

이전글

 

Spring 4. DI

1. 의존 객체 주입받기 다음과 같은 UserDao 인터페이스가 있다. import java.util.Collection; public interface UserDao { void create(User user); } 그리고 두 종류가 UserDao 가 존재한다. 하나는 HashMap을..

yelimkim98.tistory.com


스프링에 Application Context 또는 Bean Factory, 스프링 컨테이너라고 불리는 객체가 존재하고,

이것이 스프링의 DI에서 런타임 시점의 의존관계를 결정하는 역할을 한다는 것을 이전 글에서 말했다.

 

이번 포스팅에서는 이전 글의 예제 코드에 Application Context를 적용해 볼 것이다.

 

1. spring context 의존성 추가

먼저 build.gradle 에 spring context 에 대한 dependency를 추가해준다.

apply plugin: 'java'

sourceCompatibility = 1.8
targetCompatibility = 1.8
compileJava.options.encoding = "UTF-8"

repositories {
  mavenCentral()
}

dependencies {
  compile 'org.springframework:spring-context:5.0.2.RELEASE'
}

 

2. 설정파일 작성

AppContext.java 를 생성해서 다음과 같이 작성하였다. 줄 별 해석은 주석으로 달아놓았다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/*
 * @Configuration :
 * 스프링 설정 클래스를 의미하는 어노테이션.
 * 이 어노테이션을 붙여야 스프링 설정 클래스로 사용할 수 있다.
 */
@Configuration
public class AppContext {

    /*
     * 스프링 빈(spring bean)을 만드는 메서드에 @Bean 어노테이션을 붙인다.
     * 그러면 이 메서드가 생성하는 객체를 스프링 빈으로 등록한다.
     */
    @Bean
    public UserDao userDao() {
        return new HashMapUserDao();
    }

    @Bean
    public UserService userService() {
        return new UserService(userDao());
    }
}

 

 

3. Application Context 객체 사용

UserServiceFactory 대신 ApplicationContext 객체를 사용하여 UserService 객체를 얻는다.

import java.util.Collection;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Test {

    public static void main(String[] args) {
        /*
         * AnnotionContextConfigApplicationContext는
         * 설정파일(AppContext 클래스)로부터
         * 생성할 객체와 의존 주입 대상을 정해서
         * 객체를 생성하고 의존 객체를 주입한다.
         */
        ApplicationContext appContext =
            new AnnotationConfigApplicationContext(AppContext.class);
        
        /* 스프링 컨테이너로부터 이름이 "userService 인 객체를 구한다. */
        UserService userService = appContext.getBean("userService", UserService.class);

        UserCreateRequest request =
            new UserCreateRequest("yelim980103@gmail.com", "김예림", "password");
        userService.create(request);
    }
}

 


출처 : 초보 웹 개발자를 위한 스프링 5 프로그래밍 입문 (최범균)