본문 바로가기

SpringFramework Core - I. IoC 컨테이너/6. Bean 커스터마이징하기

1.6.3. 다른 Aware 인터페이스들

ApplicationContextAware과 BeanNameAware와 더불어, 스프링은 bean들이 컨테이너를 가리킬 수 있도록 하는 넓은 범위의 Aware 콜백 인터페이스를 제공한다. 일반적인 규칙으로써, 이름은 의존성 타입을 가리킨다. 다음 표는 가장 중요한 Aware 인터페이스들을 요약한다.

 

이름 주입된 의존성 다음에서 설명...
ApplicationContextAware ApplicationContext ApplicationContextAware과 BeanNameAware
ApplicationEventPublisherAware ApplicationContext를 감싸고 있는 이벤트 publisher ApplicationContext의 추가 기능들
BeanClassLoaderAware 클래스로더가 bean 클래스들을 로딩함 Bean 인스턴스화하기
BeanFactoryAware BeanFactory ApplicationContextAware과 BeanNameAware
BeanNameAware bean의 이름 ApplicationContextAware과 BeanNameAware
BootstrapContextAware 컨테이너가 실행하는 리소스 어댑터인 BootstrapContext. 전형적으로 JCA 환경의 ApplicationContext 인스턴스들에서만 사용가능하다. JCA CCI
LoadTimeWeaverAware 로딩 시에 클래스 정의를 처리하기 위해 정의된 위버 스프링 프레임워크의 AspectJ를 통한 로딩 시의 위빙
MessageSourceAware 메시지들을 처리하기 위해 설정된 (인자화와 국제화를 지원하는) 전략  ApplicationContext의 추가 기능들
NotificationPublisherAware 스프링의 JMX 알림 publisher  Notifications
ResourceLoaderAware 리소스 접근을 위해 설정된 low-level 로더  Resources
ServletConfigAware 컨테이너가 실행하는 현재의 ServletConfig. 웹 환경의 스프링 ApplicationContext에서만 유효하다. 스프링 MVC
ServletContextAware 컨테이너가 실행하는 현재의 ServletContext. 웹 환견의 스프링 ApplicationContext에서만 유효하다. 스프링 MVC

이러한 인터페이스들을 사용하는 것은 코드를 스프링 API와 결합시키며 제어 역전 스타일을 따르지 않는 것임을 다시 한번 주의하길 바란다. 결과적으로, 우리는 컨테이너에 프로그램적으로 접근할 필요가 있는 인프라 bean들을 위해 사용하는 것을 추천한다.