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단계] 이오(이지우) 미션 제출합니다. #572

Merged
merged 8 commits into from
Sep 25, 2023

Conversation

LJW25
Copy link

@LJW25 LJW25 commented Sep 24, 2023

안녕하세요 가비, 이오입니다!
이번 리뷰도 잘 부탁드립니다 😄

이번 단계에서는 구현하며 고민되는 부분이 많이 있었던 것 같아요.
2단계에서 리뷰 주신 HandlerMappings 일급 컬렉션도 가비의 조언이 옳다고 생각하여 반영하였는데, 3단계까지 구현하고 나니 다시 애매해지더라구요.
여유가 되신다면 함께 의견을 나눠보면 좋을것 같습니다 :)


# Controller의 메소드들이 response를 알아야할까?

현재 controller의 모든 메소드들이 MoelAndView를 반환하고 DispatcherServlet에서 해당 ModelAndViewrender해서 사용되고 있습니다.
controller에서 response를 직접적으로 사용하는 부분이 전혀 없는데 response를 매개변수로 받아야 하는 걸까요?
이번 단계 미션을 진행하면서 지울까 하다가, 혹시 추후에 사용되는 사례가 있어서 현재와 같은 구조로 나온걸까? 싶어서 놔두었습니다.
가비는 어떻게 생각하시나요?

# 어디까지가 Legacy이고 어디까지가 유연성일까?

기존에 Legacy controller와 어노테이션 기반 controller를 유연하게 대처하기 위해 DispatcherServlet에서 HandlerMappings, mapHandlerAdapter(handler) 등을 사용해 추상화해주었습니다.
그런데 legacy를 완전히 삭제하고 나니 어차피 mvc controller 밖에 사용되지 않는데, 괜히 depth를 늘리기만 하는 불필요한 추상화가 아닌가 하는 생각이 들더라구요.
한편으로는 이 또한 추후에 다른 방향으로 controller가 생긴다면? 그렇다면 유연성을 살리는 방향이 도움되지 않을까? 하는 생각이 들어 기존의 방식을 유지하였습니다.
HandlerMappings, mapHandlerAdapter(handler) 도 Legacy의 일부로 삭제해야하는걸까요? 아니면 이건 유연한 구조의 일환으로 생각해야 할까요? 가비의 의견이 궁금합니다 😄

@LJW25 LJW25 self-assigned this Sep 24, 2023
Copy link
Member

@iamjooon2 iamjooon2 left a comment

Choose a reason for hiding this comment

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

안녕하세요 2️⃣5️⃣
저도 미션을 해야 리뷰를 남길 수 있을 것 같아서, 제출하고 리뷰 남겨봤습니다
다음 리뷰요청 주시면 머지할게용

(달게 없어서 정말 힘들었습니다😂)

import webmvc.org.springframework.web.servlet.View;

public class JsonView implements View {

@Override
public void render(final Map<String, ?> model, final HttpServletRequest request, final HttpServletResponse response)
throws Exception {
response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);

if (model.size() > 0) {
Copy link
Member

Choose a reason for hiding this comment

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

model의 size가 0보다 작을 때는 어떻게 되나용...?

Copy link
Author

Choose a reason for hiding this comment

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

0일때는 응답에 담을 내용이 없다고 생각하여 패스하도록 구현하였습니다. 이 구조가 아닌걸까요..? 저도 확신없이 구현한 부분이라 🥲

Copy link
Member

Choose a reason for hiding this comment

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

앗 제가 코멘트를 요상하게 달았군요🧎‍♀️단순 질문이었습니다..

@iamjooon2
Copy link
Member

남겨주신 질문 관련 제 의견입니다

Controller의 메소드들이 response를 알아야할까?

예리하시군요 2️⃣5️⃣
저는 생각 못하고있었습니다.
구구께서 레거시 -> @MVC 옮기는 과정에서 파라미터는 그대로 남기신게 아닐까 싶습니다
사실 이미 지우신 곳도 있으시던데, 이미 답을 내리신게 아닐까 싶어요

어디까지가 Legacy이고 어디까지가 유연성일까?

정말 답이 없는 질문이군요🙃

코드의 유통기한이 명확한 미션이라는 환경에서는 당연히 레거시겠지만
저는 레거시가 될 일도 없을 것 같아서 안지웠습니다
이 코드 저말고 더 안볼 것 같아서요
2️⃣5️⃣께서 스프링을 만드신다면 유연성이고, 미션을 하신다면 레거시이지 않을까 싶습니다

Copy link
Member

@iamjooon2 iamjooon2 left a comment

Choose a reason for hiding this comment

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

고생많으셨습니다 이오🙇🏻‍♂️

import webmvc.org.springframework.web.servlet.View;

public class JsonView implements View {

@Override
public void render(final Map<String, ?> model, final HttpServletRequest request, final HttpServletResponse response)
throws Exception {
response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);

if (model.size() > 0) {
Copy link
Member

Choose a reason for hiding this comment

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

앗 제가 코멘트를 요상하게 달았군요🧎‍♀️단순 질문이었습니다..

@iamjooon2 iamjooon2 merged commit de39282 into woowacourse:ljw25 Sep 25, 2023
1 check 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