hrming
[Spring] Bean 등록 & 주입 흐름 본문
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
'Spring' 카테고리의 다른 글
| [Spring] 예외처리 (0) | 2026.01.18 |
|---|---|
| [Spring] bean 등록 방법 & @Configuration (3) | 2025.02.08 |
| [Spring] MultipartFilter 설정 시, XSS Filter에 값이 null로 들어감 (0) | 2025.01.23 |
| [Spring] XSS Filter (1) | 2025.01.22 |
| [Spring] @Transactional 어노테이션을 추가해도 트랜잭션이 적용되지 않는 경우 (2) | 2024.09.19 |
Comments