이번에는 컨테이너에 등록한 Bean 객체를 확인해 보는 시간이 있었다.
빈 객체를 등록할 때 어노테이션으로 등록하면 자동으로 등록되기 때문에 직접 볼 수 없었지만,
직접 볼 수 있도록 코딩했다.
Bean을 찾는 패키지를 만들려면 테스트 폴더의 hello.core 하위에 beanfind 패키지를 만듭니다.
그리고 ApplicationContextInfoTest 테스트 클래스를 생성합니다.
테스트 클래스에 빈 컨테이너를 만듭니다.
테스트 프레임워크인 JUnit 5 이상부터는 클래스에 public 생략 가능!
빈 정의된 이름의 배열을 등록합니다.
foreach 문을 호출하기 위해 iter를 써 엔터를 하면 자동적으로 입력이 된다.
ac.getBeanDefinitionNames 로 Spring 에 등록되어 있는 모든 하늘의 이름을 조회합니다.
그리고 ac.getBean에서 beanDefinitionName을 빈 이름으로 빈 객체 (인스턴스)를 쿼리 ~~
위의 코드에서 beanDefinitionName은 key 값이 되고 Bean 오브젝트는 value 값이 됩니다.
테스트 코드가 위와 같이 제대로 작동하는지 확인할 수 있습니다!
name=appconfig 뿐만 아니라 memberService에서 등록한 네 개의 빈 객체를 확인할 수 있습니다~~
위의 코드에서 알 수 있듯이 등록 된 빈 객체 외에도 Spring Container 내부에서 반환되는 코드도 함께 출력됩니다.
내부 코드를 제외하고 볼 수 있도록 테스트를합시다.
테스트 코드를 하나 더 만들기 위해 붙여넣고,
하늘의 1 개에 관한 메타데이타 정보를 표시할 수 있는 getBeanDefinition 를 호출합니다.
위의 beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION 코드는
스프링 내부에서 작동하기 위해 등록한 병이 아니라,
애플리케이션을 개발하기 위해 등록한 Bean의 경우에만 출력을 수행하기 위해 if 문을 작성하십시오.
그리고 시험을 되돌아보면~~
위와 같이 직접 등록한 빈 오브젝트가 직접 출력되는 것을 확인할 수 있다!