작년 10월 정도에 스프링의 기초 개념인 DI IoC, AOP 들과 Argument Resolver, Exception Resolver, 톰캣의 ThreadPool 등의 내용을 POJO(Java 17)와 몇몇 라이브러리들(리플렉션 등) 만을 활용하여 "나만의 작은 WAS이자 프레임워크"를 만들어본 바가 있다.
만들면서 실제로 재밌기도 했고, 이번엔 TODO로 남겨놓은 부분들을 추가로 개발해 볼 예정이고, 기존 코드의 복잡성을 낮추기 위해 리팩토링을 시작할 예정인데 이를 블로그에 연재식으로 남겨볼까 한다.
이유는, 만들면서 새로 배우는 것들을 더 잘 남겨보기 위해서, 그리고 실제 스프링과 정확히 어떤 차이점을 가지는 지에 대해서도 남기면 좋을 것 같은데 README.md에 전부 쓰기엔 양이 방대할 것 같아서 이다.
위 레포지토리가 지금까지 DI(생성자로 주입함), IoC 컨테이너(타입 안전 이종 컨테이너이긴 함..), AOP(동적 프록시로 만들었음), @GetMapping 이라던지 등등의 기초적인 구현이 되어있고 추가로 만들어 보려고 하는 부분은 아래와 같다.
java.nio.channels.Selector를 이용한 Reactor 패턴을 적용하면 좋지 않을까 싶지만 아직까지는 구상단계우선은 이거 두개 먼저.. 더 구상하고 있긴한데 더 적어뒀다간 공수표 될 수 있을 것 같아서 추후에 추가되면 수정하는 걸로..🤔
우선은 기존 코드 리팩토링을 하고 설명하는 식으로 진행해볼 예정이다.