본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 4. 스프링 컨테이너와 스프링 빈] 컨테이너에 등록된 모든 빈 조회 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 3. 17.
728x90
반응형

이번 시간에는 컨테이너에 등록한 빈(Bean) 객체들을 확인해보는 시간을 가졌다.

 

빈 객체를 등록할때, 어노테이션으로 등록하면 자동으로 등록이 되기 때문에 직접 보지는 못했는데,

직접 볼 수 있도록 코딩을 하였다.

 

빈을 찾는 패키지를 만들기 위해, 테스트 폴더 hello.core 하위에다 beanfind 패키지를 생성한다.

 

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

 

테스트 클래스에 빈 컨테이너를 생성해준다.

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

 

빈 정의된 이름 배열을 등록을 해준다.

 

foreach문을 불러오기 위해 iter을 쓰고 엔터를 하면 자동으로 입력이 된다.

ac.getBeanDefinitionNames로 스프링에 등록된 모든 빈 이름을 조회해준다.

그리고 ac.getBean으로 beanDefinitionName을 빈 이름으로 빈 객체(인스턴스)를 조회한다~~

위의 코드에서 beanDefinitionName이 key값이 되고, bean 객체가 value값이 될 것이다.

반응형

테스트 코드가 위와 같이 정상 작동하는 것을 확인할 수 있다!

name = appconfig 뿐만 아니라, memberService부터 등록한 4개의 빈 객체를 확인할 수 있다~~

 

위의 코드에서 볼 수 있듯이, 등록한 빈 객체 외에도 스프링 컨테이너 내부적으로 돌아가는 코드도 함께 출력이 되는데,

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

 

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

빈 하나하나에 대한 메타데이터 정보를 볼 수 있는 getBeanDefinition을 호출한다.

 

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

스프링 내부에서 작동을 하기 위해 등록한 빈들이 아닌,

애플리케이션을 개발하기 위해 등록한 빈들인 경우에만 출력을 해주기 위해 if문을 작성해준다.

 

그리고 테스트를 돌려보면~~

위와 같이 직접 등록한 빈 객체들이 직접 출력되는 것을 확인할 수 있다!

728x90
반응형

'개발자 공부 - 인프런 온라인 강의 > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글

[섹션 4. 스프링 컨테이너와 스프링 빈] BeanFactory와 ApplicationContext (+ 스프링 컨테이너의 계층구조) / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.04.01
[섹션 4. 스프링 컨테이너와 스프링 빈] 스프링 빈 조회 - 상속 관계 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.04.01
[섹션 4. 스프링 컨테이너와 스프링 빈] 스프링 빈 조회 - 동일한 타입이 둘 이상 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.19
[섹션 4. 스프링 컨테이너와 스프링 빈] 스프링 빈 조회 - 기본 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.19
[섹션 4. 스프링 컨테이너와 스프링 빈] 스프링 컨테이너 생성 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.16
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 스프링으로 전환하기 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.13
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] IoC, DI, 그리고 컨테이너 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.12
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 좋은 객체 지향 설계의 5가지 원칙의 적용 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.05

댓글