(섹션 4. 스프링 컨테이너 및 스프링 빈) 컨테이너에 등록된 모든 빈 조회/임플란

  • by


이번에는 컨테이너에 등록한 Bean 객체를 확인해 보는 시간이 있었다.

빈 객체를 등록할 때 어노테이션으로 등록하면 자동으로 등록되기 때문에 직접 볼 수 없었지만,

직접 볼 수 있도록 코딩했다.


Bean을 찾는 패키지를 만들려면 테스트 폴더의 hello.core 하위에 beanfind 패키지를 만듭니다.


그리고 ApplicationContextInfoTest 테스트 클래스를 생성합니다.


테스트 클래스에 빈 컨테이너를 만듭니다.

테스트 프레임워크인 JUnit 5 이상부터는 클래스에 public 생략 가능!


빈 정의된 이름의 배열을 등록합니다.



foreach 문을 호출하기 위해 iter를 써 엔터를 하면 자동적으로 입력이 된다.


ac.getBeanDefinitionNames 로 Spring 에 등록되어 있는 모든 하늘의 이름을 조회합니다.

그리고 ac.getBean에서 beanDefinitionName을 빈 이름으로 빈 객체 (인스턴스)를 쿼리 ~~

위의 코드에서 beanDefinitionName은 key 값이 되고 Bean 오브젝트는 value 값이 됩니다.

728×90

반응형



테스트 코드가 위와 같이 제대로 작동하는지 확인할 수 있습니다!

name=appconfig 뿐만 아니라 memberService에서 등록한 네 개의 빈 객체를 확인할 수 있습니다~~

위의 코드에서 알 수 있듯이 등록 된 빈 객체 외에도 Spring Container 내부에서 반환되는 코드도 함께 출력됩니다.

내부 코드를 제외하고 볼 수 있도록 테스트를합시다.


테스트 코드를 하나 더 만들기 위해 붙여넣고,

하늘의 1 개에 관한 메타데이타 정보를 표시할 수 있는 getBeanDefinition 를 호출합니다.


위의 beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION 코드는

스프링 내부에서 작동하기 위해 등록한 병이 아니라,

애플리케이션을 개발하기 위해 등록한 Bean의 경우에만 출력을 수행하기 위해 if 문을 작성하십시오.


그리고 시험을 되돌아보면~~

위와 같이 직접 등록한 빈 오브젝트가 직접 출력되는 것을 확인할 수 있다!