BackEnd/Spring

[Spring] 스프링은 객체 컨테이너

샤아이인 2022. 1. 14.

공부하며 중요하다 싶은 내용들을 블로그에 공부겸 정리한 내용입니다! 지적 댓글 환영합니다~

스프링은 객체 컨테이너 이다!

스프링의 핵심 기능은 객체를 생성하고 초기화하는 것 이다. 이와 관련된 기능은 ApplicationContext라는 인터페이스에 정의되어 있다.

 

AnnotationConfigApplicationContext 클래스는 이 인터페이스를 알맞게 구현한 클래스 중 하나다.

AnnotationConfigApplicationContext 클래스는 자바 클래스에서 정보를 읽어와 객체 생성과 초기화를 수행하게 됩니다!

 

XML, 그루비 설정코드를 사용하여 객체 생성/초기화를 하는 클래스도 존재합니다.

 

우선 다음 다이어그램을 살펴보실까요?

BeanFactory : 객체 생성과 검색에 대한 기능을 정의한다. 예를들어 getBean()이 있다, 싱글턴/프로토타입 여부 확인하는 기능 제공

 

ApplicationContext : 메시지, 프로필/환경 변수 등을 처리하는 기능을 정의

 

AnnotationConfigApplicationContext : 자바 어노테이션을 이용하여 클래스로부터 객체 설정 정보를 가져온다.

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

GenericGroovyApplicationContext : groovy 코드를 이용해 설정 정보를 가져온다.

 

위 3개의 구현 class중 어떤것을 사용하더라도 설정 정보로부터 Bean이라 불리는 스프링 객체를 생성하고 그 객체를 내부에 보관한다.

getBean() 메서드 호출시 해당 빈 객체를 제공하게 됩니다.

 

▶ 다음 예시를 하나 살펴보시죠!

// 설정 정보를 이용하여 빈 객체를 생성한다.
AnnotationConfigApplicationContext containBean = new AnnotationConfigApplicationContext(AppContext.class)

// 빈 객체를 제공한다.
Greeter g = containBean.getBean("greater", Greeter.class);
 

new AnnotationConfigApplicationContext(AppContext.class) 을 통해 스프링컨테이너를 생성할때 설정정보 클래스(AppContext.class) 를 넘겨주어 빈을 생성하게 된다.

 

▶ ApplicationContext(or BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 를 담당하고 있어서 Container 라고도 부른다.

 

▶ 빈 객체는 싱글톤 이다! 한 개의 @Bean 애노테이션에 대해 한개의 빈 객체를 생성한다.

댓글