Skip to content

Latest commit

 

History

History
31 lines (23 loc) · 1.25 KB

컨테이너에 등록된 모든 빈 조회.md

File metadata and controls

31 lines (23 loc) · 1.25 KB
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 : 스프링 내부에서 사용하는 빈