hrming

[Spring] Bean 등록 & 주입 흐름 본문

Spring

[Spring] Bean 등록 & 주입 흐름

hrming 2026. 1. 27. 21:52

1️⃣ 서버 기동

  • WAS 또는 Spring 애플리케이션 시작
  • 아직 Spring 컨테이너 없음

2️⃣ ApplicationContext 생성

  • Spring 컨테이너 생성
  • Bean 생성·관리 역할 담당
  • 이 시점엔 “무엇을 Bean으로 만들지”는 모름

개념

ApplicationContext = Bean 컨테이너


3️⃣ 설정 클래스(AppConfig) 로딩

@Configuration
@ComponentScan("com.myapp")
public class AppConfig {
}
  • Spring 설정 클래스 로딩
  • Bean 등록 규칙을 읽음

 

개념

@Configuration = 설정 클래스

Bean 정의와 스캔 규칙 포함


4️⃣ ComponentScan 실행

@ComponentScan("com.myapp")
  • 지정 패키지 하위 탐색
  • @Component 계열 클래스 발견

 

대상:

  • @Component
  • @Service
  • @Repository
  • @Controller

개념

ComponentScan = Bean 후보 탐색


5️⃣ Bean 생성

  • 탐색된 클래스들로 Bean 생성
  • 기본 Scope: singleton
  • 컨테이너당 1개 인스턴스
@Component
public class SignupValidator { }

signupValidator Bean 생성

 

개념

Bean 생성은 ApplicationContext가 담당


6️⃣ 의존성 주입 (@Autowired)

@Service
public class SignupService {
    private final SignupValidator validator;

    public SignupService(SignupValidator validator) {
        this.validator = validator;
    }
}

 

  • 필요한 Bean을 컨테이너에서 찾아 주입
  • 생성자 주입 권장

 

개념

DI(Dependency Injection)


7️⃣ 서버 준비 완료

  • 모든 Bean 생성 및 주입 완료
  • 요청 처리 가능 상태

✅ 핵심 개념 정리

ApplicationContext Bean 컨테이너
@Configuration 설정 클래스
ComponentScan Bean 후보 탐색
@Component Bean 등록 대상
@Autowired 의존성 주입

 

Spring에서 Bean 생성과 의존성 주입은 모두 ApplicationContext가 담당하며,
ComponentScan은 Bean 후보를 찾기 위한 수단이다.

 

 

참고:

스프링의 정석

ChatGPT

Comments