본문 바로가기

WINK-(Web & App)/Spring Boot 스터디

[2025 1학기 스프링 부트 스터디] #여민호 6주차

반응형

[ 섹션 5 ]

스프링에 대해 더 집중 탐구해보자

# 1. 스프링 컨테이너 생성

스프링 컨테이너 : 스프링 프레임 워크의 핵심 컴포넌트

두가지 방식으로 생성가능

XML 기반으로 생성 가능 애노테이션 기반으로 생성 가능(ex. AppConfig)

<생성 과정>

(1) 스프링 컨테이너 생성

 

new를 활용하여 생성한다.

*중요* 스프링 컨테이너를 생성 시 구성 정보를 지정해야한다

->우리는 AppConfig를 통해 구성 정보를 지정해주었다.

 

(2) 스프링 빈 등록

비어있는 스프링 빈을 채운다.

이 빈 이름으로는 메서드 이름을 사용하며 직접 부여가 가능하다

*중요* 이름이 항상 다른 이름이어야 한다(그러지 않으면 오류가 발생함)

 

(3) 스프링 빈 의존 관계 준비

지금 빈에 각 메서드를 주입하면 서로의 관계가 정해지지 않은채 존재한다

 

(4) 각 빈 의존관계 주입 

설정 정보를 참고해서 의존관계를 주입함


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

컨테이너 내 생성된 빈이 무엇이 있는지 조회하는 코드이다.

(간략한 코드 설명)

ac.getBeanDefinitionNames() : 스프링에 있는 모든 빈을 조회

ac.getBean() : 빈 이름으로 빈 객체(인스턴스)를 조회함


#3. 스프링 빈 조회(기본)

스프링 빈을 조회하는 3가지 방법

1. 빈이름으로 조회 (findBeanByName)

2. 이름 없이 타입만으로 조회->인터페이스를 조회(findBeanByType)

3. 구체 타입으로 조회 (findBeanByName2)


#4. 스프링 빈 조회 - 예외) 동일한 타입이 둘 이상일경우

빈 조회를 할때 동일한 타입이 둘 이상이면 

! ! 오류 발생 ! !

<예시 코드>

이미 만들어놓은 AppConfig에 오류를 넣는 대신 새로운 config를 만든다. 그리고 겹치는 타입의 스프링 빈을 생성

겹치는 타입을 System.out.println으로 배출한다

위 configuration에서 memberRepository가 겹침

즉) 1. 겹치는 타입의 빈을 찾고

      2. 찾은 빈의 이름을 지정한다

      3. 찾은 빈의 타입을 조회한다


#5. 스프링 빈 - 상속관계 (중요)

기본 원칙)부모 빈을 조회 시 부모의 모든 자식도 모두 조회할 수 있다

<그림 예시>

 1번을 조회시 1,2,3,4,5,6,7 모두 조회됨

<확인 코드>

상속관계 조회 가능

1. 중복 오류 확인

2. 빈 이름 지정

3. 하위 타입으로 조회

4. 하위 타입이 아닌 부모 타입 조회

5. 부모 타입으로 모두 조회~

 

반응형