-
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 구현하기 - 1단계] 히이로(문제웅) 미션 제출합니다. #390
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.
안녕하세요 히이로~ 미션으로 만나뵙게 되어 너무 반갑네요 🙌
리드미 너무 좋은데요? 👍🏻
1단계 너무 깔끔하게 잘 짜주셔서 딱히 남길게 없어서 간단하게 코멘트 남겼습니다.
2단계때 같이 반영해도 충분할 것 같아서 1단계는 머지하겠습니다.
앞으로 저도 같이 많이 배울거 같네요. 2단계도 화이팅입니다!
- [] 어노테이션 기반의 MVC 프레임워크를 구현한다. | ||
- [] mvc 모듈과 app 모듈의 영역이 잘 구분되어야 한다. | ||
- [] 새로운 컨트롤러가 생겨도 MVC 프레임워크 영역까지 영향이 미치면 안된다. | ||
- [x] AnnotationHandlerMapping 구현 사항 | ||
- [x] initialize 기능 구현 | ||
- [x] basePackage 하위에 존재하는 @Controller 어노테이션 선언 클래스 탐색 | ||
- [x] Controller 클래스 내 선언된 @requestMapping 어노테이션 선언 메서드 탐색 | ||
- [x] 각 Method 객체를 조합으로 가지는 HandlerExecution 객체를 생성해서 저장 | ||
- [x] getHandler 기능 구현 | ||
- [x] HttpServletRequest 객체를 인자로 받아서 HandlerKey 객체 생성 | ||
- [x] 생성된 HandlerKey 객체를 key로 가지는 value 값에 해당하는 handler를 반환 | ||
- [x] HandlerExecution 구현 사항 | ||
- [x] handler 객체에서 request, response 객체를 인자로 받아 적합한 비즈니스 로직을 수행하는 기능을 구현한다. |
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.
👍🏻👍🏻
log.info("Initialized AnnotationHandlerMapping!"); | ||
} | ||
|
||
private void addAnnotatedHandlerExecution(Class<?> controller) { | ||
for (Method method : controller.getMethods()) { | ||
if (!method.isAnnotationPresent(RequestMapping.class)) { |
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.
stream으로 좀 더 깔끔하게 뎁스를 줄여볼 수 있을거 같아요!
} | ||
} | ||
|
||
private Set<Class<?>> getAnnotatedControllerClasses() { |
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.
메서드 위치를 순서대로 두면 좀 더 읽기 수월할 것 같습니다.
public Object getHandler(final HttpServletRequest request) { | ||
return null; | ||
String requestURI = request.getRequestURI(); | ||
RequestMethod requestMethod = RequestMethod.valueOf(request.getMethod().toUpperCase()); |
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.
method는 대문자로만 들어와서 toUpperCase 해줄 필요 없지 않을까요
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 미션 리뷰이로 함께하게 되어 기쁩니다 ㅎㅎ
듣기로는 전설의 톰캣 컨트리뷰터라고 하시던데 많이 배워가겠습니다 ^^
첫번째 단계는 AnnotationHandlerMappingTest를 통과시키기 위한 구현을 완료했습니다. 이 외 별다른 구현사항은 없었어서 자세한 내용은 README의 기능 명세서를 봐주시면 좋을 것 같아요.
리뷰 잘 부탁드립니다~ 😄