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단계] 저문(유정훈) 미션 제출합니다. #402

Merged
merged 7 commits into from
Sep 14, 2023

Conversation

jeomxon
Copy link

@jeomxon jeomxon commented Sep 13, 2023

안녕하세요 헙크, 저문입니다 :)
만나뵙게 되어 영광입니다!

사실 처음에 감이 잘 안잡혀서 학습테스트를 어떻게 활용할 수 있을까?에 대해 많이 고민했던 것 같아요.
그렇게 하나씩 단계적으로 하다보니 테스트가 통과하도록 만들 수 있었어요..!

하면서 들었던 고민은 RequestMapping의 method속성에 여러개의 값이 들어오는 경우에 대한 처리였는데요.
배열로 구현되어있으니 다중 method에 대해서도 처리해야할까요?
실제로 method를 하나씩만 사용하는 경우만 봤기에 어떻게 처리하는게 좋을지 의문이 들었어요.

커밋범위입니다~

리뷰 잘 부탁드립니다🙇🏻‍♂️🙇🏻‍♂️🙇🏻‍♂️

@jeomxon jeomxon self-assigned this Sep 13, 2023
Copy link
Member

@HubCreator HubCreator left a comment

Choose a reason for hiding this comment

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

안녕하세요 저문 :) 저도 만나뵙게되어 기쁩니다 ㅎㅎㅎ
작성해주신 코드가 깔끔하여 편하게 리뷰할 수 있었습니다. 앞으로의 미션에서도 많은 대화 나눠봤으면 좋겠네요. 다음 단계에서 뵙겠습니다!

final Method[] methods = clazz.getDeclaredMethods();
for (final Method method : methods) {
if (method.getName().startsWith("test")) {
final Junit3Test junit3Test = clazz.getDeclaredConstructor().newInstance();
Copy link
Member

Choose a reason for hiding this comment

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

인스턴스를 생성하는 부분은 for문 밖에서 한 번만 진행해도 될 것 같아요!

Copy link
Author

Choose a reason for hiding this comment

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

꼼꼼한 리뷰 감사합니다👍🏻

// TODO Junit4Test에서 @MyTest 애노테이션이 있는 메소드 실행
final Method[] methods = clazz.getMethods();
for (final Method method : methods) {
final MyTest annotation = method.getAnnotation(MyTest.class);
Copy link
Member

Choose a reason for hiding this comment

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

찾아보니 method.isAnnotationPresent()라는 메서드도 있더라구요 ㅎㅎㅎ 해당 애너테이션이 있는지 조금 더 깔끔하게 가져올 수 있을 것 같습니다!

Copy link
Author

Choose a reason for hiding this comment

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

와 헙크 감사합니다 :)
이런 메서드도 있었군요!

circuitClasses(controllerClazzSet);
}

private void circuitClasses(final Set<Class<?>> controllerClazzSet) {
Copy link
Member

Choose a reason for hiding this comment

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

뎁스를 줄이는 메서드 추출!! 깔끔하고 멋집니다 ㅎㅎㅎ

private void mapHandler(final Class<?> clazz, final Method method, final RequestMapping requestMappingAnnotation) {
if (requestMappingAnnotation != null) {
final String requestUrl = requestMappingAnnotation.value();
final RequestMethod requestMethod = requestMappingAnnotation.method()[0];
Copy link
Member

Choose a reason for hiding this comment

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

하면서 들었던 고민은 RequestMapping의 method속성에 여러개의 값이 들어오는 경우에 대한 처리였는데요.
배열로 구현되어있으니 다중 method에 대해서도 처리해야할까요?

요런 고민을 하셨군요! 저도 이 부분에 대한 처리를 어떻게 해야 할지 고민이 되었습니다. 저도 메서드를 여러 개 받는 경우는 보지 못했지만, 일단 저보다 똑똑하신 분들이 만들어 놓은 구조에 깊은 뜻이 있겠거니 하고 저는 for문을 돌려서 HttpMethod마다 Map에 저장했습니다 ㅋㅋㅋㅋ 이 부분은 구구의 강의에서 꼭 여쭤보고 싶네요. 미션에서는 mvc 구조를 따라하되 공부를하는 것이 목적이다보니, 잘 돌아가도록 구조를 만들어 놓는다면 두 방법 모두 문제가되지 않는다고 생각했습니다ㅎㅎㅎ

@HubCreator HubCreator merged commit b8a9820 into woowacourse:jeomxon Sep 14, 2023
1 check failed
@jeomxon jeomxon deleted the step1 branch September 16, 2023 12:48
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