웹 개발

spring bean 등록정보 조회 유틸리티 클래스

노루아부지 2019. 7. 24. 15:49
public static void printBeanDefinitions(GenericApplicationContext gac) {
	List<List<String>> roleBeanInfos = new ArrayList<List<String>>();
  
	roleBeanInfos.add(new ArrayList<String>());
	roleBeanInfos.add(new ArrayList<String>());
	roleBeanInfos.add(new ArrayList<String>());
  
	for(String name : gac.getBeanDefinitionNames()) {
 		int role = gac.getBeanDefinition(name).getRole();
   
		List<String> beanInfos = roleBeanInfos.get(role);
		beanInfos.add(role + "\t" + name + "\t" + gac.getBean(name).getClass().getName());
	}
  
	for(List<String> beanInfos : roleBeanInfos) {
		for(String beanInfo : beanInfos) {
			System.out.println(beanInfo);
		}
	}
}

 

출력되는 내용은 application context에 등록된 빈의 역할(role)과 빈 이름, 빈 클래스이다.

 

ex)

0 hello springbook.learningtest.spring31.ioc.Hello

2 org.springframework.context.annotation.internalConfigurationAnnotationProcessor org.springframework.context.annotation.ConfigurationClassPostProcessor

 

맨 앞의 숫자의 의미는

 

0 : 애플리케이션 로직 빈과 애플리케이션 인프라 빈처럼 애플리에키션이 동작하는 중에 사용 되는 빈

2 : 전용 태그에 의해 등록

728x90
loading