본문 바로가기
  • Where there is a will there is a way.
개발/spring

스프링 application context

by 소확행개발자 2020. 2. 8.

빈 ( Bean )

스프링에서 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈 이라고 부른다.

빈팩토리 ( Bean Factory )

스프링에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리라고 부른다.

 

애플리케이션 컨텍스트 ( Application Context )

빈 팩토리보다는 이를 좀 더 확장한 개념이다. 애플리케이션 컨텍스트는 IoC 방식을 따라 만들어진 일종의 빈 팩토리라고 생각하면 된다. 

 

빈 팩토리라고 말할 때는 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점을 맞춘 것이고, 애플리케이션 컨텍스트라고 말할 때는 애플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IoC 엔진이라는 의미가 좀 더 부각된다고 보면 된다.

 

애플리케이션 컨텍스트는 별도의 정보를 참고해서 빈의 생성, 관계설정 등의 제어 작업을 총괄한다.

( 스프링 책을 읽었기 때문에 Factory 를 예로들면 Factory class 에는 설정정보 예를 들어 어떤 클래스의 오브젝트를 생성하고 어디에서 사용하도록 연결해줄 것인가 등에 관한 정보가 평범한 자바 코드로 만들어져 있다. ) 

 

애플리케이션 컨텍스트는 직접 정보를 담고 있진 않지만 설정정보를 담고 있는 무엇인가를 가져와 이를 활용하는 범용적인 IoC 엔진 같은 것이라고 볼 수 있다.

( @Configuration 이라고 되어있는 정보들을 가져오겠네 ! )

 

애플리케이션 컨텍스트의 동작방식

 

기존에 오브젝트 팩토리를 이용했던 방식과 스프링의 애플리케이션 컨텍스트를 사용한 방식을 비교해보자.

 

오브젝트 팩토리에 대응되는 것이 스프링의 애플리케이션 컨텍스트다 스프링에서는 간단히 스프링 컨테이너라고 부르기도 한다. 또는 빈 팩토리라고 부를 수도 있다. 

 

애플리케이션 컨텍스트는 ApplicationContext 인터페이스를 구현한다.

 

기존의 팩토리는 오브젝트 생성과 관계를 맺어주는 제한적인 역할을 하는데 반해, 애플리케이션 컨텍스트는 애플리케이션에서 IoC를 적용해서 관리할 모든 오브젝트에 대한 생성과 관계설정을 담당한다.

 

애플리케이션 컨텍스트의 장점

 

1. 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다.

2. 애플리케이션 컨텍스트는 종합 IoC 서비스를 제공해준다. 

 오브젝트가 만들어지는 방식 시점과 전략을 다르게 가져갈수도 있고, 부가적으로 자동생성 후처리 정보의 조합 설정방식변화 인터셉팅등 다양한 응용을 할 수 있다. 

3. 애플리케이션 컨텍스트는 빈을 검색하는 다양한 방법을 제공한다.

 

스프링 빈의 스코프

스프링 빈이 생성되고 존재하고 적용되는 범위를 스코프라고 표현한다. 스코프는 기본적으로 싱글톤이다. 싱글톤 스코프는 컨테이너  내에 한 개의 오브젝트만 만들어져서, 강제로 제거하지 않는 한 스프링 컨테이너가 존재하는 동안 계속 유지된다. 스프링에서 만들어지는 대부분의 빈은 싱글톤 스코프를 가진다.

 

경우에 따라서는 싱글톤 외의 스코프를 가질 수 있다. 

프로토타입 스코프 : 컨테이너에 빈을 요청할 때마다 매번 새로운 오브젝트를 만들어 준다.

'개발 > spring' 카테고리의 다른 글

스프링 DI  (0) 2020.02.09
싱글톤 패턴의 한계와 스프링 싱글톤  (0) 2020.02.09
스프링 부트 스케쥴러 메모  (0) 2019.06.10
13장 웹 어플리케이션과 영속성 관리  (0) 2019.04.18
spring oauth2.0 jwt 토큰 방식  (5) 2019.01.21

댓글