본문 바로가기

SpringFramework Core - I. IoC 컨테이너/5. Bean Scopes

5.5.1. 커스텀 Scope 만들기

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-custom-creating

 

 

커스텀 scope를 스프링 컨테이너로 통합하기 위해서는 이제부터 설명할 org.springframework.beans.factory.config.Scope 인터페이스를 구현해야한다. 자신만의 scope를 어떻게 구현할지에 대해서는, 스프링 프레임워크가 제공하는 Scope 구현체들과 Scope javadoc을 참고하라. 구현해야할 메소드들에 대해서 구체적으로 설명해줄 것이다.

 

Scope 인터페이스는 scope에서 객체를 얻기위한 4가지 메소드를 가지고 있다. scope에서 그 객체들을 제거하면 소멸시킬 수 있다.

 

세션 scope 구현체는 세션 scope의 bean을 반환한다. 만약 bean의 인스턴스가 존재하지 않으면, 새로 만들어서 세션과 묶은 후에 반환해준다. 다음 메소드는 설정된 scope의 객체를 반환해준다.

Object get(String name, ObjectFactory<?> objectFactory)

 

세션 scope 구현체는 설정된 세션으로부터 세션 scope bean을 제거한다. 객체는 반환되어야 하는데, 해당 이름의 객체가 없다면 null을 반환시킬 수 있다. 다음 메소드는 설정된 scope에서 객체를 제거한다.

Object remove(String name)

 

다음 메소드는 scope가 소멸되거나 scope 내의 특정 객체가 소멸될 때 실행할 콜백들을 등록하고 있다.

void registerDestructionCallback(String name, Runnable destructionCallback)

 

소멸 콜백에 대해 자세한 정보를 원한다면, javadoc이나 스프링 scope 구현체를 참고하라.

 

다음 메소드는 설정된 scope에서 conversation 식별자를 얻어내고 있다.

String getConversationId()

식별자는 scope마다 다르다. 세션 scope 구현체에서는 이 식별자가 세션 식별자가 된다.