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 구현 - 3단계] 스플릿-박상현 미션 제출합니다. #562

Merged
merged 16 commits into from
Sep 27, 2023

Conversation

splitCoding
Copy link

안녕하세요 채채😊!!

저번 step2 마지막 코멘트들에 답변 했으니 해당 부분 더 얘기해보면 좋을 것 같아요!!👍

이번 리뷰도 잘 부탁드립니다!! 🙇

@splitCoding splitCoding self-assigned this Sep 24, 2023
Copy link

@chaewon121 chaewon121 left a comment

Choose a reason for hiding this comment

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

스플릿 안녕하세요~! 저번 리뷰가 많이 늦어진거 다시한번 사과드립니다..ㅠㅠ 너무 잘 구현해 주셨네요..! 스플릿과 의견 나누면서 저도 많이 배웠습니다! 제의견은 참고만 해주세요! 고생 많으셨습니다!

Comment on lines +39 to +41
return new ModelAndView(REDIRECT_INDEX_PAGE_VIEW);
}
return "redirect:/401.jsp";
return new ModelAndView(REDIRECT_UNAUTHORIZED_VIEW);

Choose a reason for hiding this comment

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

상수 분리 굳..!

Comment on lines 76 to 80

public void setNotFound(final HttpServletResponse response) {
response.setStatus(404);
}
}
Copy link

@chaewon121 chaewon121 Sep 25, 2023

Choose a reason for hiding this comment

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

이 부분에 대해서 지난번 리뷰에 이어서 답변하겠습니다..!
음..HandlerExceptionResolver를 인터페이스로 만들고 HandlerNotFoundExceptionResolver를 구현체로 만들어서 DispatcherServletInitializer 클래스에서 해당 Resolver를 추가해주는 방식은 어떨까요?
그리고 말씀해주신 상태코드 수정은 뷰에서 하는 역할인지는 사실 더 고민해봐야 할 것 같네요..ㅠㅠ디스패쳐 서블릿에서 상태코드 변경후 위에서 말한 방식으로 뷰에게 404페이지를 렌더링하는 역할을 넘기는 방법도 있을것같아요..!

Copy link
Author

Choose a reason for hiding this comment

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

지금 있는 구조에서 해당 부분에 대해서 진행할 수 있게 코드 추가해서 커밋했습니다!!!😊

Choose a reason for hiding this comment

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

리팩토링하기 어려운 부분이라 생각했는데 이렇게 빠르게 해내시다니..감동3...

Comment on lines +15 to +19

public HandlerAdapter getFirstHandleableAdapterForHandler(final Object handler) {
final List<HandlerAdapter> handleableAdaptersForHandler = getHandleableAdaptersForHandler(handler);
if (handleableAdaptersForHandler.isEmpty()) {
throw new HandlerAdapterNotExistException();

Choose a reason for hiding this comment

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

반영 감동..!

Comment on lines 8 to +9

Optional<Object> getHandler(final HttpServletRequest request);
boolean isHandleable(final HttpServletRequest request);

Choose a reason for hiding this comment

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

이 부분을 따로 공통 매서드로 빼신 이유가 있을까요!?

Copy link
Author

Choose a reason for hiding this comment

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

해당 메서드가 없으면 HanlderMappings 가 Handler 를 찾는 과정에서 stream 을 통해 실제로 받은 Handler 가 null 인지를 체크하는 방식을 택해야 하더라구요!!😭

개인적으로 null을 다루는 것보다 해당 객체에게 직접 handleable 한지 물어보는 것이 더 바람직하다고 생각하여 해당 메서드를 생성하였습니다!!

Comment on lines +23 to +28
final HandlerMapping handlerMapping = handlerMappings.stream()
.filter(mapping -> mapping.isHandleable(request))
.findFirst()
.orElseThrow(HandlerNotExistException::new);

return handlerMapping.getHandler(request);

Choose a reason for hiding this comment

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

감동2..

Comment on lines +13 to +21

@DisplayName("/ 경로 요청 테스트")
class HomeControllerTest extends UsingTomcatTest {
@DisplayName("GET 요청시 200 상태코드 와 함께 메인 페이지로 응답한다.")
@Test
void save() {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
//given
final HttpGet httpGet = new HttpGet(tomcatUrl + "/");

Choose a reason for hiding this comment

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

꼼꼼한 테스트 역시 꼼꼼

Copy link

@chaewon121 chaewon121 left a comment

Choose a reason for hiding this comment

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

스플릿 안녕하세요~! 저번 리뷰가 많이 늦어진거 다시한번 사과드립니다..ㅠㅠ 너무 잘 구현해 주셨네요..! 스플릿과 의견 나누면서 저도 많이 배웠습니다! 제의견은 참고만 해주세요! 고생 많으셨습니다!

@sonarcloud
Copy link

sonarcloud bot commented Sep 26, 2023

SonarCloud Quality Gate failed.    Quality Gate failed

Bug A 0 Bugs
Vulnerability B 1 Vulnerability
Security Hotspot A 0 Security Hotspots
Code Smell A 6 Code Smells

75.2% 75.2% Coverage
0.0% 0.0% Duplication

warning The version of Java (11.0.20.1) you have used to run this analysis is deprecated and we will stop accepting it soon. Please update to at least Java 17.
Read more here

idea Catch issues before they fail your Quality Gate with our IDE extension sonarlint SonarLint

Copy link

@chaewon121 chaewon121 left a comment

Choose a reason for hiding this comment

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

스플릿 안녕하세요! 고생 많으셨습니다..! 미션을 빠르게 수행해주셨는데 제가 늦어서 많은 피드백을 못드렸었던 부분이 가장 아쉬웠습니다..ㅠㅠ 그래도 얘기를 나누면서 저도 한번더 생각해보게되는 부분들 덕에 더 배울 수 있었습니다 또한 제의견도 잘 반영해주셔서 감사합니다! 이만 머지하겠습니다~!

@chaewon121 chaewon121 merged commit 3b8d02c into woowacourse:splitcoding Sep 27, 2023
1 of 2 checks passed
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.

2 participants