-
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 구현하기 - 3단계] 이오(이지우) 미션 제출합니다. #572
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.
안녕하세요 2️⃣5️⃣
저도 미션을 해야 리뷰를 남길 수 있을 것 같아서, 제출하고 리뷰 남겨봤습니다
다음 리뷰요청 주시면 머지할게용
(달게 없어서 정말 힘들었습니다😂)
app/src/main/java/com/techcourse/servlet/DispatcherServletInitializer.java
Show resolved
Hide resolved
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) { |
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.
model의 size가 0보다 작을 때는 어떻게 되나용...?
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.
0일때는 응답에 담을 내용이 없다고 생각하여 패스하도록 구현하였습니다. 이 구조가 아닌걸까요..? 저도 확신없이 구현한 부분이라 🥲
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.
앗 제가 코멘트를 요상하게 달았군요🧎♀️단순 질문이었습니다..
mvc/src/main/java/webmvc/org/springframework/web/servlet/view/JsonView.java
Outdated
Show resolved
Hide resolved
남겨주신 질문 관련 제 의견입니다 Controller의 메소드들이 response를 알아야할까?예리하시군요 2️⃣5️⃣ 어디까지가 Legacy이고 어디까지가 유연성일까?정말 답이 없는 질문이군요🙃 코드의 유통기한이 명확한 미션이라는 환경에서는 당연히 레거시겠지만 |
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.
고생많으셨습니다 이오🙇🏻♂️
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) { |
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.
앗 제가 코멘트를 요상하게 달았군요🧎♀️단순 질문이었습니다..
안녕하세요 가비, 이오입니다!
이번 리뷰도 잘 부탁드립니다 😄
이번 단계에서는 구현하며 고민되는 부분이 많이 있었던 것 같아요.
2단계에서 리뷰 주신
HandlerMappings
일급 컬렉션도 가비의 조언이 옳다고 생각하여 반영하였는데, 3단계까지 구현하고 나니 다시 애매해지더라구요.여유가 되신다면 함께 의견을 나눠보면 좋을것 같습니다 :)
# Controller의 메소드들이
response
를 알아야할까?현재 controller의 모든 메소드들이
MoelAndView
를 반환하고DispatcherServlet
에서 해당ModelAndView
를render
해서 사용되고 있습니다.controller에서
response
를 직접적으로 사용하는 부분이 전혀 없는데response
를 매개변수로 받아야 하는 걸까요?이번 단계 미션을 진행하면서 지울까 하다가, 혹시 추후에 사용되는 사례가 있어서 현재와 같은 구조로 나온걸까? 싶어서 놔두었습니다.
가비는 어떻게 생각하시나요?
# 어디까지가 Legacy이고 어디까지가 유연성일까?
기존에 Legacy controller와 어노테이션 기반 controller를 유연하게 대처하기 위해
DispatcherServlet
에서HandlerMappings
,mapHandlerAdapter(handler)
등을 사용해 추상화해주었습니다.그런데 legacy를 완전히 삭제하고 나니 어차피 mvc controller 밖에 사용되지 않는데, 괜히 depth를 늘리기만 하는 불필요한 추상화가 아닌가 하는 생각이 들더라구요.
한편으로는 이 또한 추후에 다른 방향으로 controller가 생긴다면? 그렇다면 유연성을 살리는 방향이 도움되지 않을까? 하는 생각이 들어 기존의 방식을 유지하였습니다.
HandlerMappings
,mapHandlerAdapter(handler)
도 Legacy의 일부로 삭제해야하는걸까요? 아니면 이건 유연한 구조의 일환으로 생각해야 할까요? 가비의 의견이 궁금합니다 😄