Inflearn brand logo image
Inflearn brand logo image
채널톡 아이콘

인프런 커뮤니티 질문&답변

윤소영님의 프로필 이미지

작성한 질문수 2

스프링 핵심 원리 - 기본편

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

테스트 두개를 동시에 돌렸을 경우 왜 밸류값이 달라지는 건가요??

작성

·

34

0


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 findApplicationAllBean() {
        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);
            }
        }
    }

}

테스트 코드를 이렇게 짠 후 같이 돌리면 오브젝트로 나오는 애들 코드가 각각 다르게 나옵니다.

스프링 컨테이너는 초기에 한 번만 생성/등록되고 각각의 테스트에서 같은 것을 가져오는 건줄 알았는데 아닌가요..??

답변 1

0

David님의 프로필 이미지

안녕하세요. 윤소영님, 공식 서포터즈 David입니다.

아래 테스트는 if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) { 조건으로 필터링하여 출력하고 있는 점을 참고해 주세요:)

감사합니다.