-
Notifications
You must be signed in to change notification settings - Fork 302
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MVC 구현하기 - 1단계] 헙크(정현승) 미션 제출합니다. #384
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요, 헙크!
코드가 너무 깔끔해서 리뷰할 게 없네요ㅎㅎ...바로 머지하겠습니다!!ㅎㅎ
대신 궁금한 거 몇 개 여쭤봤어요! 🙇♀️🙇♀️
시간 나실 때 답변해주시면 무한 감사합니다.
|
||
for (final Method annotatedMethod : annotatedMethods) { | ||
final RequestMapping annotation = annotatedMethod.getAnnotation(RequestMapping.class); | ||
for (RequestMethod requestMethod : annotation.method()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기도 final 붙일 수 있을 것 같아요!
} | ||
} | ||
} catch (NoSuchMethodException | | ||
InvocationTargetException | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
혹시 InvocationTargetException은 이 코드의 어느 부분에서 발생할 가능성이 있는지 알려주실 수 있나요? 🙇♀️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clazz.getDeclaredConstructor().newInstance()
이 부분에서 발생하는 체크 예외입니다. 그래서 try-catch
로 잡아주었는데, HandlerExecution
쪽에서 이를 생성하게 하여 try-catch
가 아닌 기존 코드에 throws Exception
으로 명시되어있는 것을 활용해 조금 더 깔끔하게 만들어봤습니다!
public HandlerExecution(final Object instance, final Method method) { | ||
this.instance = instance; | ||
this.method = method; | ||
} | ||
|
||
public ModelAndView handle(final HttpServletRequest request, final HttpServletResponse response) throws Exception { | ||
return (ModelAndView) method.invoke(instance, request, response); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Object instance를 필드로 두지않고, method필드를 사용해 불러올 수도 있는데, 필드로 두신 이유를 공유해 주실 수 있으신가요? handle메소드가 호출될 때마다 지역 변수가 생기는 것을 막기 위해서인가요?
final Object instance = method.getDeclaringClass().getConstructor().newInstance();
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!!! method로부터 class를 뽑을 생각은 못했네요 ㅋㅋㅋㅋ 가능한줄도 모르고 있었습니다. 이미 상위에서 clazz가 필요해서 이를 사용하고 있기 때문에 HandlerExecution
에 바로 넘겨주어 instance를 만드는 것도 나쁘지 않다고 생각이 드네요! 알려주셔서 감사합니다 :)
* 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * [MVC 구현하기 - 1단계] 헙크(정현승) 미션 제출합니다. (#384) * 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]> * feat: HandlerMapping 구현 * feat: HandlerMappings와 Adapter 구현 * feat: DispatcherServlet에 HandlerMappings, HandlerAdapters 적용 * feat: JspView 구현 * fix: HandlerExecution 수정 * refactor: 패키지 구조 수정 * refactor: 패키지 구조 수정 * fix: DispatcherServlet 클래스의 ModelAndView의 model 반환 로직 수정 * refactor: HandlerMappings 패키지 위치 수정 --------- Co-authored-by: kang-hyungu <[email protected]>
* 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]>
* 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * [MVC 구현하기 - 1단계] 헙크(정현승) 미션 제출합니다. (woowacourse#384) * 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]> * feat: HandlerMapping 구현 * feat: HandlerMappings와 Adapter 구현 * feat: DispatcherServlet에 HandlerMappings, HandlerAdapters 적용 * feat: JspView 구현 * fix: HandlerExecution 수정 * refactor: 패키지 구조 수정 * refactor: 패키지 구조 수정 * fix: DispatcherServlet 클래스의 ModelAndView의 model 반환 로직 수정 * refactor: HandlerMappings 패키지 위치 수정 --------- Co-authored-by: kang-hyungu <[email protected]>
* 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]>
* 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * [MVC 구현하기 - 1단계] 헙크(정현승) 미션 제출합니다. (woowacourse#384) * 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]> * feat: HandlerMapping 구현 * feat: HandlerMappings와 Adapter 구현 * feat: DispatcherServlet에 HandlerMappings, HandlerAdapters 적용 * feat: JspView 구현 * fix: HandlerExecution 수정 * refactor: 패키지 구조 수정 * refactor: 패키지 구조 수정 * fix: DispatcherServlet 클래스의 ModelAndView의 model 반환 로직 수정 * refactor: HandlerMappings 패키지 위치 수정 --------- Co-authored-by: kang-hyungu <[email protected]>
* 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * [MVC 구현하기 - 1단계] 헙크(정현승) 미션 제출합니다. (#384) * 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]> * [MVC 2단계] 헙크 미션 제출합니다 (#449) * 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * [MVC 구현하기 - 1단계] 헙크(정현승) 미션 제출합니다. (#384) * 패키지 위치 변경 및 코드 정리 * 서블릿 학습 테스트 코드 개선 * feat: 학습 테스트 구현 * test: Reflections 테스트 작성 * feat: AnnotationHandlerMapping 초안 * refactor: AnnotationHandlerMapping 수정 * test: Servlet 테스트 작성 --------- Co-authored-by: kang-hyungu <[email protected]> * feat: HandlerMapping 구현 * feat: HandlerMappings와 Adapter 구현 * feat: DispatcherServlet에 HandlerMappings, HandlerAdapters 적용 * feat: JspView 구현 * fix: HandlerExecution 수정 * refactor: 패키지 구조 수정 * refactor: 패키지 구조 수정 * fix: DispatcherServlet 클래스의 ModelAndView의 model 반환 로직 수정 * refactor: HandlerMappings 패키지 위치 수정 --------- Co-authored-by: kang-hyungu <[email protected]> * feat: JsonView 구현 * feat: 어노테이션 기반 MVC로 수정 및 DispatcherServlet 패키지 위치 이동 * refactor: JsonView에 try-with-resources 구문 적용 * refactor: tobe 패키지 구조화 * feat: Stage3, DiContainer 구현 * feat: Stage4, DiContainer 구현 * fix: JsonView의 model 사이즈에 따른 응답값 구성 로직 수정 * refactor: RegisterController의 중복 핸들러 제거 및 예외 처리 수정 --------- Co-authored-by: kang-hyungu <[email protected]>
안녕하세요 헙크입니다!
이번 PR에서는 간단하게 학습테스트를 진행하게 되어서 금방 끝난 것 같네요ㅎㅎㅎ
앞으로의 미션에서는 구조적인 것과, 클린코드를 조금 더 신경쓰면서 구현할 예정입니다. 감사합니다 !!