Conversation
Tomcat 구현 1단계
HttpHeader, HttpMethod, RequestUrl, HttpStatus, UserQueryKey
Tomcat 구현 2단계 - 리팩토링
jung-woo-kim
left a comment
There was a problem hiding this comment.
안녕하세요!
전체적으로 너무 잘짜주셔서 리뷰할 부분 찾느라 정말 힘들었네요,,😮😮
테스트도 좋고, enum활용, stream 등 동작 파라미터화 활용 모두 감탄하면서 봤어요!
정말 쥐어짜서 리뷰해드렸습니다!!
싱글톤으로 컨트롤러들을 관리하는 부분만 한번 고려해주세요👍
정말 잘하시고 계시는 것 같습니다!!
고생하셨어요!
| .orElse(null); | ||
| validateMethod(m); | ||
| return m; | ||
| } |
There was a problem hiding this comment.
스트림 활용하신 부분 일단 너무 좋은 것 같아요!
enum의 valueOf 메서드가 똑같은 기능을 제공하는데 한번 알아보시겠어요??👍
| .orElse(null); | ||
| validateHttpStatus(c); | ||
| return c; | ||
| } |
There was a problem hiding this comment.
전체적인 Enum Class 활용 너무 좋습니다!
Enum에서 제공하는 values나 valueOf 같은 메서드들 한번 참고해보세요!🙂
| public String toString() { | ||
| StringBuilder stringBuilder = new StringBuilder(); | ||
| header.forEach((key, value) -> | ||
| stringBuilder.append(key.getHeader()).append(": ").append(value).append("\r\n")); |
There was a problem hiding this comment.
헉 forEach와 람다의 활용 너무 깔끔하네요,,👍
| controllers.put(RequestUrl.SIGNUP_URI.getUrl(), new SignupController()); | ||
| controllers.put(RequestUrl.LOGIN_URI.getUrl(), new LoginController()); | ||
| controllers.put(RequestUrl.LIST_URI.getUrl(), new ListController()); | ||
| } |
There was a problem hiding this comment.
이렇게 구현할 시 사용자 요청이 엄청나게 많아지면 어떨까요?!
한번의 요청마다 Controller들을 엄청나게 생성하게 될 거에요!
Controller는 상태를 갖지 않기 때문에 프로그램 내에서 하나씩만 존재하는 것이 효율적입니다! (싱글톤)
즉, map() 메서드를 RequestHandler가 생성될때마다 계속 수행하지 말고, static{} 안에 contollers.put()들을 모아두는 것이 좋아보여요!
static은 객체 생성 시마다 실행되는 것이 아니고 클래스에 고정되어있기 때문에 한번만 실행돼요! 🧐
|
리뷰 감사합니다!! |
refactor: RequestMapper 컨트롤러 static으로 관리
HttpRequest
HttpResponse