Aware
Spring은 Aware라는 인터페이스를 제공한다.
Aware 인터페이스를 구현하는 객체 인스턴스를 생성하면 특정 클래스에 대한 참조가 함께 제공된다.
특정 클래스에 대한 참조를 얻어 타입 캐스팅하거나 메서드를 호출하는 등 직접 여러 기능을 사용할 수 있다.
하지만 이 방식을 사용하면 스프링 컨텍스트와 강하게 결합된 코드가 되며 IoC를 따르지 않기 때문에 일반적으로는 사용하지 않는 것이 좋다고 한다.
Aware를 구현하는 대신 Autowire하여 참조를 얻는 것이 더 권장된다. (생성자 주입 / Setter 주입 / 필드 주입)
Aware의 종류는 아래와 같다.
Name | Injected Dependency | Explained in… |
---|---|---|
ApplicationContextAware | Declaring ApplicationContext. | |
ApplicationEventPublisherAware | Event publisher of the enclosing ApplicationContext. | |
BeanClassLoaderAware | Class loader used to load the bean classes. | |
BeanFactoryAware | Declaring BeanFactory. | |
BeanNameAware | Name of the declaring bean. | |
LoadTimeWeaverAware | Defined weaver for processing class definition at load time. | |
MessageSourceAware | Configured strategy for resolving messages (with support for parameterization and internationalization). | |
NotificationPublisherAware | Spring JMX notification publisher. | |
ResourceLoaderAware | Configured loader for low-level access to resources. | |
ServletConfigAware | Current ServletConfig the container runs in. Valid only in a web-aware Spring ApplicationContext. | |
ServletContextAware | Current ServletContext the container runs in. Valid only in a web-aware Spring ApplicationContext. |
사용 사례
ApplicationEventPublisherAware를 사용하여 eventPublisher 참조를 MongoIndexedSessionRepository 객체에 주입할 수 있다. (3.2.1 버전 기준)
Last updated