AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
// 스프링 컨테이너의 빈 이름 조회
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
// 스프링 컨테이너의 전체 빈 이름과 객체 조회
for(String beanDefinitionName : beanDefinitionNames){
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name="+beanDefinitionName + " object=" + bean);
}
// 스프링 컨테이너에 사용자가 등록한 빈 이름과 객체 조회
for(String beanDefinitionName : beanDefinitionNames){
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
if(beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION){
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name="+beanDefinitionName + " object=" + bean);
}
}
ac.getBean("빈 이름")
: “빈 이름”에 해당하는 빈 객체를 조회
ac.getBeanDefinitionNames()
: 스프링 컨테이너에 등록된 모든 빈의 이름 조회
스프링이 내부에서 사용하는 빈과 사용자가 등록한 빈을 구분하는 방법은 getRole()
을 사용한다
- ROLE_APPLICATION : 사용자가 등록한 빈
- ROLE_INFRASTRUCTURE : 스프링 내부에서 사용하는 빈