-
컨테이너에 등록된 모든 빈 조회FrameWork/Spring&Spring-boot 2022. 1. 1. 11:42
개발 팁★
-Junit5 부터는 class 앞에 public 표시 안해도 된다.
-iter+Tab ->향상된 for문 자동완성
-soutm -> 메서드 문을 찍어준다
-soutv -> 변수명 찍어준다.
-스프링 컨테이너에 실제 스프링 빈들이 잘 등록 되었는지 확인해보자
package hello.core.beanfind; import hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.AnnotationConfigApplicationContext; 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); } } } }
@Test 모든 빈 출력하기
- 실행하면 스프링에 등록된 모든 빈 정보를 출력할 수 있다.
- 'ac.getBeanDefinitionNames( )':스프링에 등록된 모든 빈 이름을 조회한다.
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
- 'ac.getBean( )':빈 이름으로 빈 객체(인스턴스)를 조회한다.
Object bean = ac.getBean(beanDefinitionName);
->꺼내 질 Bean 객체의 type을 정하지 않았기 때문에 Object로 꺼내진다.
@Test 어플리케이션 빈 출력하기
- 스프링이 내부에서 사용하는 빈은 제외하고, 내가 등록한 빈만 출력해 보자
- 스프링 내부에서 사용하는 빈은 'getRole'로 구분할 수 있다.
BeanDefinition.ROLE_APPLICATION BeanDefinition.ROLE_INFRASTRUCTURE
-ROLE_APPLICATION : 직접 등록한 애플리케이션 빈
-ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
->Bean하나하나에 대한 meta데이터 정보들을 꺼 낼 수 있다.
[출처 : 김영한. 스프링 핵심 원리-기본편. 인프런]
'FrameWork > Spring&Spring-boot' 카테고리의 다른 글
스프링 빈 조회 - 동일한 타입이 둘 이상 (0) 2022.01.01 스프링 빈 조회 - 기본☆ (0) 2022.01.01 스프링 컨테이너와 스프링 빈 (0) 2022.01.01 스프링으로 전환하기 (0) 2021.12.31 Ioc DI,그리고 컨테이너 (0) 2021.12.31