스프링/1. 스프링 핵심 원리

20강. 빈 확인

sdafdq 2023. 7. 17. 21:57
public class ApplicationContextInfoTest {
    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

    @Test
    @DisplayName("모든 빈 출력")
    public void findAllBean(){
        String[] beanDefinitionNames = ac.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            Object bean = ac.getBean(beanDefinitionName);
            System.out.println("bean = " + bean);
        }
    }
}

ac.getBeanDefinitionNames();

모든 빈 이름들 가져옴.

 

그 다음 오브젝트, bean으로 뭐가 올지 모르니 얻은 이름들로 getBean으로 찾아서 Object로 받고 출력

 

 

 

@Test
    @DisplayName("모든 빈 출력")
    public void findApplicationBean(){
        String[] beanDefinitionNames = ac.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
            if(beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION){
                Object bean = ac.getBean(beanDefinitionName);
                System.out.println("bean = " + bean);
            }
        }
    }

내가 직접 넣은 bean만 출력

BeanDefinition Bean에 대한 정보를 가지고 있는 그런거 인 듯?

 

BeanDefinition.ROLE_APPLICATION 직접 등록한 빈

BeanDefinition.ROLE_INFRASTRUCTURE 스프링 내부에서 사용하는 빈