BeanContextServices
BeanContextServices (BeanContext 서비스 인터페이스)
BeanContextServices 인터페이스는 BeanContext가 내부의 BeanContextChild 객체들에게 일반적인 "서비스"를 제공하기 위한 메커니즘을 정의해요. BeanContext가 단순히 빈들의 집합을 관리하는 것을 넘어, 추가적인 서비스를 제공할 수 있게 해 줘요.
본문
BeanContextServices는 BeanContext, BeanContextServicesListener, BeanContextServiceRevokedListener를 상속하는 인터페이스예요. BeanContext 안의 자식 객체들이 사용할 수 있는 서비스(예: 인쇄, 보안 등)를 등록하고 제공하는 기능을 담당해요.
BeanContext 안의 BeanContextChild는 getService()를 호출해 원하는 서비스를 요청할 수 있어요. 서비스는 BeanContextServiceProvider가 실제 구현을 제공하며, 서비스 클래스와 선택자(selector)를 기준으로 요청돼요. 서비스가 더 이상 필요 없으면 releaseService()로 해제해요.
주요 메서드는 다음과 같아요.
boolean addService(Class<?> serviceClass, BeanContextServiceProvider serviceProvider)
void revokeService(Class<?> serviceClass, BeanContextServiceProvider serviceProvider, boolean revokeCurrentServicesNow)
boolean hasService(Class<?> serviceClass)
Object getService(BeanContextChild child, Object requestor, Class<?> serviceClass, Object serviceSelector, BeanContextServiceRevokedListener bcsrl) throws TooManyListenersException
void releaseService(BeanContextChild child, Object requestor, Object service)
Iterator<?> getCurrentServiceClasses()
Iterator<?> getCurrentServiceSelectors(Class<?> serviceClass)
void addBeanContextServicesListener(BeanContextServicesListener bcsl)
addService()/revokeService()— 서비스를 등록하거나 회수해요.hasService()— 특정 서비스가 등록돼 있는지 확인해요.getService()/releaseService()— 서비스를 요청하고 해제해요.getCurrentServiceClasses()/getCurrentServiceSelectors()— 현재 등록된 서비스 클래스와 선택자 목록을 반환해요.
대표적인 구현 클래스로 BeanContextServicesSupport가 있어요.