ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext 를 스프링 컨테이너라 한다.
ApplicationContext 는 인터페이스이다.
이렇게 등록을 하면 스프링 컨테이너에 AppConfig.class
에 들어있는 모든 클레스들을 스프링 빈에 등록한다.
여기에는 빈이름과 실제 객체가 키벨류처럼 들어있다.
AnnotationConfigApplicationContext ac = new
AnnotationConfigApplicationContext(AppConfig.class);
@Test
@DisplayName("모든 빈 출력하기")
void findAllBean() {
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name=" + beanDefinitionName + " object=" +
bean);
}
}
이런식으로 실제로 생성되어있는 객체를 꺼낼수 있다.
ac.getBean(빈이름, 타입)
ac.getBean(타입)
ac.getBeansOfType() 을 사용하면 해당 타입의 모든 빈을 조회할 수 있다.
부모 타입으로 조회하면, 자식 타입도 함께 조회한다.
BeanFactory
스프링 컨테이너의 최상위 인터페이스다. 가장기본
ApplicationContext
BeanFactory 기능을 모두 상속받아서 제공한다. + 수 많은 부가기능
(국제화 , 환경변수, 애플리케이션 리소스, 편리한 리소스 조회)
ApplicationContext의 구현체로
이런종류 선택해서 사용할수있다.
위에 여러 방식 사용할수 있는게 어노테이션 기반, Xml기반등등의 파일을 읽어서 결과를 각 구현체에 넘기는 애가 있는것이다.
우리가 만든 의존관계에 대한 클레스를 스프링에 넘겨줬을때 어떻게 동작하고 가지고있고 사용할 수 있냐를 알아봤다.