오늘 한일
- MVC 프레임워크 3단계 실습
-
요구사항 1 - 애노테이션 기반 MVC 프레임워크 (완료)
-
reflections.getTypesAnnotatedWith(Controller.class) : Controller 애노테이션이 사용된 클래스 추출
-
method.getAnnotation(RequestMapping.class) : RequestMapping가 사용된 자바 메소드에 URL과 Request 메소드 정보를 추출
-
Map<HandlerKey, HandlerExecution> : URL과 Request 메소드 정보를 가지고 있는 HandlerKey와 클래스와 자바 메소드를 가지고 있는 HandlerExecution
-
이후 클라이언트로부터 요청이 오면 요청 URL과 메소드를 이용하여 HandlerKey 객체를 만들어 해당 핸들러 메소드 호출
-
-
요구사항 2 - 레거시 MVC와 애노테이션 기반 MVC 통합 (진행중)
-
힌트 1 : 기존 RequestMapping를 LegacyHandlerMapping로 변경
-
힌트 2 : DispatcherServlet에서 LegacyHandlerMapping, AnnotationHandlerMapping 모두 초기화
-
오늘 느낀점
-
요구사항 1을 하면서 생각보다 어려운 것 없는거 같은데 늦어진 느낌이다. 어려운 느낌이 적은 이유는 사실 힌트를 참고하면서 하다보니 그런거 같은데 늦어진 원인은 힌트를 안보고 하려다 늦어진거고, 쉬운 원인은 힌트를 보는것이 문제이다.
그 간극을 줄일려고 조절하고 있는데 이번 실습 같은 경우는 힌트 하나 없이 진행 해 볼 능력은 부족한거 같다. 그런 부분에서 아쉬운게 같은 단계를 진행하는 동료가 있었으면 힌트가 아닌 논의를 하면서 진행(혹은 일정 논의 후 좀더 빠르게 힌트 참조 여부를 결정 할 수도 있을것이다) 해 볼수 있었을텐데 그럴 동료가 없는게 살짝 아쉽다. 그러다보니 힌트를 더 볼까 말까 갈팡질팡 하다가 더 늦어지는 경향도 있는것 같다.(개인적인 욕심으로 힌트를 안 보고 싶어서 그런면도 있고…) -
솔직히 이번처럼 살짝 힌트에 끌려 다니는 느낌이 들때는 테스트 코드를 제대로 못 짠다…혹은 자주 사용 안하던 set같은게 나오던지 할때는 말이다. 이번같은 경우는 아예 못 짤것 같진 않으니 일부 진도가 더 진행된 다음 빠진 테스트 코드를 추가해야 겠다.(이번 단계가 늦어지고 있는 느낌이라 구현자체가 더 신경쓰인다)
-
아래와 같이 기본 메소드가 존재하는 인터페이스가 있다고는 들었는데 드디어 봤다.
@Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) public @interface RequestMapping { String value() default ""; RequestMethod method() default RequestMethod.GET; }
생각보다는 구조 자체는 간단한 느낌이다. 추가로 아래에
RequestMapping rm = method.getAnnotation(RequestMapping.class); --- @RequestMapping(value = "/users", method = RequestMethod.POST)
getAnnotation()에서 애노테이션에 사용된 값을 이용해 RequestMapping 구현체를 만드는것 같긴한데, 해당 메소드의 내부를 보려고 했는데 한두번씩 만나고 있는 아래의 원인으로 내부 구현물은 못봤다.
원인도 분명하게 적혀 있어서 이전부터 인터넷에서 찾은 방법들을 수행 해 봤는데 왠지 해결이 안된다. 정말 중요한 부분들은 아니여서 매번 아쉽지만 넘어갔는데 문제 해결이 안되는 것도 그렇고 제대로 분석자체도 못하는 것 같아서 찝찝하다. 올해가 가기전엔 확실히 해결 해 둬야겠다.
-
요구사항 2는 힌트 1과 2의 중간 정도 단계인데 어느정도만 작업하면 힌트3까지 끝날것 같다. 오늘 마무리하고 자고, 내일 일이 좀 있는지라 저녁때쯤부터는 피드백 내용도 참조하여 리팩토링을 진행하고 목요일쯤 pr을 보내지 않을까 싶다. 이후 있는 “Spring MVC 실습” 내용이 많아 보이진 않으니 일단은 괜찮을 듯 싶다.
내일 할일
-
MVC 프레임워크 3단계 실습 마무리
-
요구사항 2 - 레거시 MVC와 애노테이션 기반 MVC 통합
-
프레임워크와 라이브러리의 차이점 발표자료 준비
-