본문 바로가기

웹 개발/Spring

[Spring 기본] 컨테이너에 등록된 모든 빈 조회

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


컨테이너에 실제 스프링 빈이 잘 등록되었는지 확인해보자.

 

public class ApplicationContextInfoTest {

    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);
        }
    }
}

 

 

직접 등록한 빈만 보고 싶을 땐 아래 코드를 실행해보자. 

@Test
@DisplayName("애플리케이션 빈 출력하기")
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("name = " + beanDefinitionName + " object = " + bean);

        }

    }
}

=> ROLE_APPLICATION: 일반적으로 사용자가 정의한 빈

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

 

* 인프런 '스프링 핵심 원리 -기본편' 강의를 참고하여 작성했습니다.