Skip to content
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

Merged
merged 7 commits into from
Sep 14, 2023
Merged

Conversation

HubCreator
Copy link
Member

안녕하세요 헙크입니다!
이번 PR에서는 간단하게 학습테스트를 진행하게 되어서 금방 끝난 것 같네요ㅎㅎㅎ
앞으로의 미션에서는 구조적인 것과, 클린코드를 조금 더 신경쓰면서 구현할 예정입니다. 감사합니다 !!

Copy link

@hgo641 hgo641 left a 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()) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기도 final 붙일 수 있을 것 같아요!

}
}
} catch (NoSuchMethodException |
InvocationTargetException |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 InvocationTargetException은 이 코드의 어느 부분에서 발생할 가능성이 있는지 알려주실 수 있나요? 🙇‍♀️

Copy link
Member Author

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으로 명시되어있는 것을 활용해 조금 더 깔끔하게 만들어봤습니다!

Comment on lines +13 to +20
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);
}
Copy link

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();

Copy link
Member Author

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를 만드는 것도 나쁘지 않다고 생각이 드네요! 알려주셔서 감사합니다 :)

@hgo641 hgo641 merged commit 1f3fc3a into woowacourse:hubcreator Sep 14, 2023
1 check failed
@HubCreator HubCreator deleted the step1 branch September 15, 2023 00:55
hgo641 pushed a commit that referenced this pull request Sep 21, 2023
* 패키지 위치 변경 및 코드 정리

* 서블릿 학습 테스트 코드 개선

* [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]>
HubCreator added a commit to HubCreator/jwp-dashboard-mvc that referenced this pull request Sep 24, 2023
* 패키지 위치 변경 및 코드 정리

* 서블릿 학습 테스트 코드 개선

* feat: 학습 테스트 구현

* test: Reflections 테스트 작성

* feat: AnnotationHandlerMapping 초안

* refactor: AnnotationHandlerMapping 수정

* test: Servlet 테스트 작성

---------

Co-authored-by: kang-hyungu <[email protected]>
HubCreator added a commit to HubCreator/jwp-dashboard-mvc that referenced this pull request Sep 24, 2023
* 패키지 위치 변경 및 코드 정리

* 서블릿 학습 테스트 코드 개선

* [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]>
HubCreator added a commit to HubCreator/jwp-dashboard-mvc that referenced this pull request Sep 24, 2023
* 패키지 위치 변경 및 코드 정리

* 서블릿 학습 테스트 코드 개선

* feat: 학습 테스트 구현

* test: Reflections 테스트 작성

* feat: AnnotationHandlerMapping 초안

* refactor: AnnotationHandlerMapping 수정

* test: Servlet 테스트 작성

---------

Co-authored-by: kang-hyungu <[email protected]>
HubCreator added a commit to HubCreator/jwp-dashboard-mvc that referenced this pull request Sep 24, 2023
* 패키지 위치 변경 및 코드 정리

* 서블릿 학습 테스트 코드 개선

* [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]>
hgo641 pushed a commit that referenced this pull request Sep 25, 2023
* 패키지 위치 변경 및 코드 정리

* 서블릿 학습 테스트 코드 개선

* [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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants