Skip to content

4조 그룹 리뷰

bellringstar edited this page Jul 17, 2024 · 5 revisions

강승훈

  • 이미지 파싱에서 다들 문제가 있었는데 시작부터 InputStream을 사용하여 읽은 것이 다행입니다.
  • 스프링처럼 인스턴스를 주입하는 것까지 구현하신 것이 인상깊었습니다.
  • 다들 클래스를 잘게 나눠서 최소한의 역할을 잘 부여한 것 같습니다.
  • UI도 저와 다르게 다들 보기 좋게 만든 것도 인상깊었습니다.
  • 어떤 DB를 사용할 지 빈으로 주입을 시도하는 코드도 인상깊었습니다.
  • 템플릿 엔진을 별도로 두고, 역할을 분리한 것이 나중에 사용하기 편할 것 같습니다.
  • 템플릿 엔진에서 중첩 반복문도 해결하도록 구현한 부분이 인상깊었습니다.

오민석

  • 이번 주차는 multipart까지 구현하고 다른 분들처럼 reflection 도입 등을 하는 것이 좋을 것 같습니다
    특히 Spring 내부를 최대한 보면서 추후에 보강을 한다면 어떤 방식으로 할 지 고민을 해봐야 할 것 같습니다

  • jdbc 엔진 구현 시에 고려해야할 것들이 많다는 것을 알게 되었습니다
    특히 Connection 등을 고려하는 것이 중요할 것 같습니다
    구현은 이번에 안하더라도 내부 구조나 어떤 방식으로 되어 있는 지는 확인해야 할 것 같습니다

  • 문서화나 사진 첨부를 열심히 해야할 것 같습니다.. 리팩토링 중에 서버가 켜지지 않아서…
    오늘도 다른 분들의 질문이나 코드로 많이 배워갑니다 ^^

박혜성

  • 컴포넌트 스캔, DI, http 요청으로부터 핸들러 메서드에 전달하기 위한 인자 추출을 다들 깔끔하게 처리한 것 같습니다.
    • 현종님은 등록되지 않은 빈 객체의 의존성 주입을 이터레이터를 이용해 깔끔하게 해결한 로직이 인상적이었습니다.
    • 승훈님은 핸들러 메서드의 ArgumentResolving을 잘 처리하신 것 같습니다.
    • 다들 컴포넌트 스캔에 대해서 잘 신경쓰신 것 같습니다.
  • 다들 구조를 챙기면서도 기능 구현을 빠르게 진행하였습니다.

이지표

@Bean

빈을 만들고, 빈을 만들기 위해서 의존성을 자동으로 주입해주신 캠퍼분이 계셨다. 나는 상상만 했지, 실제로 구현하신 분들이 있어 너무 놀랐다. 빈으로 관리하기에 성능상 이점도 있고, 싱글톤이 아니고, 의존하는 값들을 생성할때 넘기기에 테스트하기에도 너무 편할 것 같다.

업보

미션을 진행하던 초창기, 바로 요청을 받기 보다는 필터로 한번 걸러주고, 요청을 처리하는 방식으로 구현하신분들을 많이 보았다. 인증 부분을 처리할때는 편하겠다는 생각이 들었으나, 구현량이 많을 것 같아 잠시 미루어 두었다. 계속 미루다가 사용자 인증 미션이 주어졌고, 현재 나의 프로젝트에는 요청을 처리하는 부분마다 사용자 인증을 하고 있다. 이번 그룹 리뷰에서 필터, 인터셉터로 인증부분을 처리하신 분들이 많았는데, 코드가 너무 깔끔한 것을 확인할 수 있었다. 미션에 치여 구현하기 힘들 것 같지만 한번 노력해 보아야겠다.

김현종

sequenceDiagram
    participant Client
    participant WebServer
    participant FilterChain
    participant SessionCheckFilter
    participant StaticResourceResolver
    participant StaticResourceHandler
    participant DispatcherServlet
    participant HandlerMapping
    participant HandlerAdapter
    participant Controller
    participant ViewResolver
    participant View
    participant HttpResponseBuilder
    Client->>WebServer: HTTP Request
    WebServer->>FilterChain: doFilter(HttpRequest)
    FilterChain->>SessionCheckFilter: doFilter(HttpRequest, FilterChain)
    SessionCheckFilter->>FilterChain: doFilter(HttpRequest)
    FilterChain->>StaticResourceResolver: resolveResource(HttpRequest)
    alt is static resource
        StaticResourceResolver->>StaticResourceHandler: handleRequest(HttpRequest)
        StaticResourceHandler->>HttpResponseBuilder: build response
        HttpResponseBuilder-->>StaticResourceHandler: HttpResponse
        StaticResourceHandler-->>FilterChain: HttpResponse
    else is dynamic resource
        StaticResourceResolver->>DispatcherServlet: service(HttpRequest)
        DispatcherServlet->>HandlerMapping: getHandler(HttpRequest)
        HandlerMapping-->>DispatcherServlet: Handler
        DispatcherServlet->>HandlerAdapter: handle(HttpRequest, Handler)
        HandlerAdapter->>Controller: handleRequest(HttpRequest)
        Controller-->>HandlerAdapter: ModelAndView
        HandlerAdapter-->>DispatcherServlet: ModelAndView
        DispatcherServlet->>ViewResolver: resolveViewName(String viewName)
        ViewResolver-->>DispatcherServlet: View
        DispatcherServlet->>View: render(Map<String, Object> model)
        View->>HttpResponseBuilder: build response
        HttpResponseBuilder-->>View: HttpResponse
        View-->>DispatcherServlet: HttpResponse
        DispatcherServlet-->>FilterChain: HttpResponse
    end
    FilterChain-->>WebServer: HttpResponse
    WebServer-->>Client: HTTP Response
Loading
  • 다들 큰 흐름은 비슷했습니다.
  • 그런데 승훈님의 경우 소켓 처리를 비동기로 하셨던데 I/O 까지 생각하면 꽤 흥미로웠습니다.
  • 이게 지금 멀티파트 파싱때문에 기존에 BufferedReader를 쓰셨다가 수정해야 하는 분들이 많던데 저도 이 부분이 좀 힘들었습니다.
  • JDBC를 구현하는 단계를 벌써 나가시는 분도 계셨는데 속도에 놀랐고 구현 내용에 또 놀랐습니다.
  • 그런데 대부분 리플렉션을 도입해 어노테이션 기반 구현을 하고 계셨다는게 또 재밌네요.

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally