[핵심-기본] 스프링 컨테이너 & 스프링 빈

너스레:)·2023년 5월 10일
0

스프링Spring

목록 보기
5/5
post-thumbnail

<목차>

  1. 스프링 컨테이너 생성
  2. 컨테이너에 등록된 모든 빈 조회
  3. 스프링 빈 조회 - 기본
  4. 스프링 빈 조회 - 동일한 타입이 둘 이상
  5. 스프링 빈 조회 - 상속 관계
  6. BeanFactory와 ApplicationContext
  7. 다양한 설정 형식 지원 - 자바 코드, XML
  8. 스프링 빈 설정 메타 정보 - BeanDefinition

1. 스프링 컨테이너 생성

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

유용한 단축키 : iter + tab => 리스트 또는 배열이 있는 상태에서 자동으로 for문을 만들어줌
유용한 단축키 : soutv => 변수 출력
유용한 단축키 : soutm => 메서드 출력

모든 빈 출력하기 ; findAllBean()

(그림 有 ; 4-1)

메소드 이름대로, 스프링 컨테이너에 등록된 '모든' 빈을 조회하기 위한 메소드
(내가 직접 등록한 빈 외에도, 스프링 내부적인 동작을 위해 무조건 생성되는 빈들조차 같이 조회됨)

  • ac.getBeanDefinitionNames() => 스프링에 등록된 모든 빈 이름을 조회한다
  • ac.getBean() => 빈 이름으로 빈 객체(인스턴스)를 조회한다

Role에 따른 빈 출력하기 ; findApplicationBean(), findInfrastructureBean()

빈의 역할에 따라 빈을 조회하기 위한 메소드

  • BeanDefinition => Bean 각각에 대한 메타데이터
  • beanDefinition.getRole() => ROLE_APPLICATION & ROLE_INFRASTRUCTURE

i) 애플리케이션 빈 출력하기 ; findApplicationBean()

(그림 有 ; 4-2)

'application 개발'을 위한 bean들만 조회하기 위한 메소드

  • BeanDefinition.ROLE_APPLICATION => application 개발을 위한 bean들

ii) 스프링 내부동작 빈 출력하기 ; findInfrastructureBean()

(그림 有 ; 4-3)

'스프링 내부적인 동작'을 위한 bean들만 조회하기 위한 메소드

  • BeanDefinition.ROLE_INFRASTRUCTURE => 스프링 내부적인 동작을 위한 bean들

3. 스프링 빈 조회 - 기본

스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법

  • ac.getBean(빈이름, 타입)

  • ac.getBean(타입)

  • 조회 대상 스프링 빈이 없으면 예외 발생

NoSuchBeanDefinitionException: No bean named 'xxxxx' available
  • i) 빈 이름으로 조회

(그림 有 ; 4-4)

  • ii) 빈 타입으로 조회

  • iii) 구체 타입으로 조회
    => 구체 타입으로 조회하면 변경시 유연성이 떨어진다

  • iv) 존재하지 않는 빈 이름으로 조회_실패 테스트
    - assertThrows => 예외처리로 검증함

(그림 有 ; 4-5)

유용한 단축키 : ctrl + shift + f10 => 해당 메소드를 실행함

4. 스프링 빈 조회 - 동일한 타입이 둘 이상

5. 스프링 빈 조회 - 상속 관계

6. BeanFactory와 ApplicationContext

7. 다양한 설정 형식 지원 - 자바 코드, XML

8. 스프링 빈 설정 메타 정보 - BeanDefinition

profile
💻 (CSE) Computer Science and Engineering

0개의 댓글