Spring의 컨테이너인 ApplicationContext는 BeanFactory 인터페이스 하위 인터페이스이다.
BeanFactory는 Spring Container의 최상위 인터페이스이며 기동시에 등록되었던 Bean을 관리하고 조회하는 역할을 한다.
ApplicationContext
는 BeanFactory
의 모든 기능을 사용할 수 있기 때문에 주로 사용되고 있다.
ApplicationContext
의 구현체는 여러가지가 있다. 구현체에 따라 XML 혹은 자바의 Class 로 만들 수 있는데 빈 등록을 BeanDefinition
으로 추상화해서 생성하기 때문이다. 이를 통해 XML, Class 모두 Bean 이 생성된다
public class ExampleConfiguration implements ApplicationContextAware {
private ApplicationContext appContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.appContext = applicationContext;
}
public void example() {
DataSource ds1 = (DataSource)appContext.getBean("DataSource");
DataSource ds2 = appContext.getBean("dataSource", DataSource.class);
}
}
위 예시처럼 ApplicationContextAware.class
를 상속받아 로직 서비스 내에서 getBean 메소드를 활용 해 생성된 Bean 객체를 가져올 수 있다.