🌿 스프링/김영한

1. 스프링 컨테이너와 스프링 빈

le2donguk 2026. 2. 8. 01:16

스프링 빈이란?

스프링 빈이란 스프링 IoC 컨테이너가 생성하고 관리하는 객체!!

자바에서 new MyClass()로 직접 객체를 만드는 대신, 스프링이 대신 생성하고, 필요할 때 꺼내서 쓸 수 있는 관리 대상 객체를 의미한다

 

 

스프링 컨테이너란?

스프링 빈을 생성하고, 관리하고, 연결해 주는 관리자라고 생각 하면 된다

 

  • 생성 시점
  • 초기화 메서드 실행
  • 종료 시 정리

 

를 알아서 관리해 준다 

 

스프링 컨테이너 생성과정

 

1. 스프링 컨테이너 생성

 

보통 스프링 컨테이너를 생성할 때 

new AnnotationConfigApplicationContext(Appconfig.class)

를 사용해서 스프링 컨테이너를 만들기 시작한다

 

이것의 의미는 Appconfig.class라는 구성정보를 정의한 class를 이용해서 Spring이 컨테이너를 만들기 시작한다 

 

 

 

2. 스프링 빈 등록 

 

이후 스프링 컨테이너는 AppConfig에 @Bean이 붙은 Method를  다 호출하면서 스프링 빈 저장소에 등록하기 시작한다

이때 빈이 스프링 컨테이너에 등록될 때

  • 빈의 이름은 Method의 이름으로
  • value는 해당 메서드가 return 하는 객체로 등록한다

 

3. 스프링 빈 의존관계 설정 

 

이전 단계에서 Appconfig를 보면서 스프링이 스프링 컨테이너로 빈을 다 가져왔다. 지금까지의 상황을 그림으로 보면 다음과 같다 

 

이제 스프링은 이 가져온 빈들을 알맞게 엮어 주는 역할을 한다 이 단계를 의존관계 설정이라고 한다 

즉 스프링은 모든 빈들을 다 컨테이너로 가져온 다음 가져온 모든 빈들을 의존관계에 맞춰 엮는 역할을 진행한다 

 

 

그렇게 의존관계에 따라 빈들을 엮으면 스프링 컨테이너가 만들어지게 된다 

 

정리하자면 

  • 스프링은 모든 빈을 다 생성하고 → 그다음에 의존관계로 엮기 시작한다
  • 라이프 사이클상 빈 생성과 의존관계가 나눠져 있는데 실제 우리가 스프링을 쓰면 생성자를 호출하면서 (빈등록) 의존관계 주입도 한 번에 처리된다

 

빈 조회 방법

  1. name과 Type(interface)으로 조회 가능
  2. Type(interface) 조회 가능
  3. retrun 해서 나오는 구현체 타입으로 조회

 

 

스프링 빈 조회 상속 관계

기본 대원칙 : 부모타입을 조회하면 자식 빈들은 다 끌려 나온다 

그래서 자바의 최상위 객체인 Object 객체를 이용해 Object 타입으로 조회를 하면 모든 스프링 빈이 다 조회된다