이 프로젝트는 스프링 프레임워크의 핵심 기능들을 자바로 직접 구현해보면서, 그 내부 동작 원리를 깊이 있게 학습하고 이해하는 것을 목표로 합니다.
스프링을 사용하면서 편리하게 활용했던 기능들이 어떤 과정을 통해 동작하는지 직접 코드로 작성하며 '마법' 뒤에 숨겨진 원리들을 파헤쳐보고자 합니다.
- IoC (Inversion of Control) 컨테이너: Bean 정의, 생성, 관리 및 생명주기(Lifecycle) 직접 구현하기
- DI (Dependency Injection): 의존성 주입(생성자 주입, Setter 주입 등) 메커니즘 구현하기
- AOP (Aspect-Oriented Programming): 프록시(Proxy) 기반의 AOP 동작 원리 이해 및 구현하기
- 웹 MVC: DispatcherServlet, HandlerMapping, HandlerAdapter 등 스프링 MVC의 기본 구조 구현해보기
- IoC 컨테이너/ 의존성 주입 (DI):
-
@Component
스캔 - 필드 기반 의존성 주입
- Setter 기반 의존성 주입
- 생성자 기반 의존성 주입
-
- 웹서버/Controller:
- DispatcherServlet
- 쓰레드풀 기반 IO
- 기타:
- (추가 기능이나 구현 중인 내용 기입)
- Language: Java 17
- Build Tool: Gradle 8.10
- Testing: JUnit 5
- Library: Reflections
이 프로젝트를 진행하며 배우고 느낀 점, 마주친 문제와 해결 과정 등을 블로그에 꾸준히 기록하고 있습니다. 스프링 내부 구현에 대한 더 자세한 이야기가 궁금하시다면 아래 링크를 방문해주세요!