본문 바로가기

Spring

Chapter 2. 스프링 컨테이너, 싱글톤 객체

스프링 입문5

2장

스프링 객체 컨테이너

  • 스프링의 핵심 기능은 객체를 생성하고 초기화 하는 것
    • ApplicationContext 인터페이스에 정의되어 있다.
  • AnnotationConfigApplicationContext 클래스는 ApplicationContext 인터페이스를 알맞게 구현한 클래스 중 하나이다. 자바 클래스에서 정보를 읽어와 객체 생성과 초기화를 수행한다.
  • ApplicationContext(또는 BeanFactory)는 빈 객체의 생성, 초기화, 보관 ,제거 등을 관리하고 있어서 컨테이너(Container)라고도 부른다.
  • 내부적으로 빈 객체와 빈 이름을 연결하는 정보를 갖는다.

BeanFactory

  • 객체 생성과 검색에 대한 기능을 정의한 인터페이스
  • 생성된 객체를 검색하는데 필요한 getBean() 메서드가 BeanFactory에 정의되어 있다.
  • 객체를 검색하는 것 이외의 싱글톤/프로토타입 빈인지 확인하는 기능도 제공

ApplicationContext

  • 메시지, 프로필/환경 변수 등을 처리할 수 있는 기능을 추가로 정의한 인터페이스

BeanFactory, ApplicationContext에 정의된 기능을 구현한 클래스들

  • 각 구현 클래스는 설정 정보로부터 빈(Bean)이라고 불리는 객체를 생성하고 그 객체를 내부에 보관한다. 그리고 getBean() 메서드를 실행하면 해당하는 빈 객체를 제공한다.

1. AnnotationConfigApplicationContext

  • 자바 애노테이션을 이용한 클래스로부터 객체 설정 정보를 가져온다.

2. GenericXmlApplicationContext

  • XML로부터 객체 설정 정보를 가져온다.

3. GenericGroovyApplicationContext

  • 그루비 코드를 이용해 설정 정보를 가져온다.

싱글톤(Singleton) 객체

  • 별도 설정을 하지 않을 경우 스프링은 한 개의 빈 객체만을 생성하며, 이때 빈 객체는 '싱글톤(singleton) 범위를 갖는다'고 표현한다
  • 싱글톤은 단일 객체(single object)를 의미하는 단어로서 스프링은 기본적으로 한 개의 @Bean 애노테이션에 대해 한 개의 빈 객체를 생성한다.
public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
        Greeter g1 = ctx.getBean("greeter",Greeter.class);
        Greeter g2 = ctx.getBean("greeter",Greeter.class);
        System.out.println("(g1 == g2) = " + (g1 == g2));
        ctx.close();
    }

// 결과는 (g1 == g2) = true 를 반환한다.

 

'Spring' 카테고리의 다른 글

Spring과 Spring Boot의 차이  (0) 2021.07.06
Chapter 3. 스프링 DI  (0) 2021.06.16
Chapter 1. 들어가며  (0) 2021.06.16