Spring Framework 와 유사하게 동작하는 웹 프레임워크를 구현한 프로젝트 입니다.
- MVC 패턴을 지원하는 프레임워크 구현
- JDBC 라이브러리 구현
- 애노테이션 기반 MVC 프레임워크 구현
- DI(Dependency Injection) 기반 MVC 프레임워크 구현
- Java 1.8
- JUnit
- HTML/CSS
- JavaScript
- Maven
- 컨트롤러에 의해 전달된 데이터를 단순히 출력하는 역할을 하는 View(JSP)에 너무 많은 로직이 포함되어있을 경우, 유지보수가 어려움.
- JUnit과 같은 도구로 단위 테스트하기가 어려움.
- MVC 패턴을 적용해 JSP의 역할을 분담해야 할 필요성을 느낌.
- MVC 패턴을 지원하는 프레임워크를 구현하는 것이 목표
- 서블릿을 직접 사용하지 않고 MVC 프레임워크를 구현해 MVC 프레임워크 기반으로 동작하도록 구현할 수 있음.
- 서블릿 중복 코드도 제거할 수 있으며, MVC 프레임워크를 사용함으로써 MVC 패턴 기반으로 개발하도록 강제할 수 있게 됨.
- MVC 패턴에 대한 더 깊은 이해를 할 수 있었음.
- 프레임워크 사용자인 개발자가 데이터를 데이터베이스에 저장할 수 있도록 데이터베이스에 접근해 SQL문을 실행해주는 라이브러리인 JDBC 라이브러리를 구현할 필요가 있음.
- 특정 DAO 에 의존성을 가지고 있지 않고 중복 코드를 최대한 줄인 라이브러리의 구현하는 것이 목표
- 발생하는 많은 중복코드들을 줄이고 라이브러리의 재사용성을 높이기 위해 여러 단계를 거쳐 리팩토링을 한 경험
- 리팩토링 과정에서 Java 8의 람다 표현식, 함수형 인터페이스, 익명 클래스, 제네릭, 가변인자 등을 사용해 Java의 여러 문법에 대한 이해도를 높이고 익숙해지는 계기가됨.
- Template Method 패턴, Callback Interface 와 같은 디자인 패턴이 스프링과 같은 프레임워크에서 어떻게 구현되어있는지를 구현을 통해 경험할 수 있었음.
- Controller 클래스를 하나만 두고, 새 기능이 추가될 때마다 새 클래스가 추가되는 것이 아닌 새 메서드가 추가되는 형식으로 구현
- Controller와 url 매핑 시, HTTP method 를 매핑에 활용하여 동일한 url이라도 다르게 동작할 수 있도록 해 프레임워크 사용자가 Restful API 표준 설계를 따를 수 있도록 지원하기 위함임.
- Java Reflection API 에 대한 이해도를 높일 수 있는 단계였음.
- Spring Framework 에서 어떤식으로 Reflection API 를 활용해 애노테이션을 인식하고 해당 애노테이션이 붙은 경우 알맞은 처리를 해주는지 직접 구현을 통해 작동원리를 파악할 수 있었음.
- 애노테이션 기반의 MVC 프레임워크 구현 이전에 구현했었던 기존 MVC 프레임워크를 애노테이션 기반으로 전환하는 과정에서 새 MVC를 적용하는 과정중에도 모든 기능이 정상적으로 동작할 수 있도록 리팩토링을 진행하면서 점진적인 리팩토링 에 대한 중요성을 인식할 수 있는 계기가 됨.
1명
2018.03.18 ~ 현재