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 구현하기 1, 2단계] 여우(조승현) 미션 제출합니다. #338

Closed
wants to merge 16 commits into from

Conversation

BackFoxx
Copy link

안녕하세요 제이!


어려웠던 점

  • 서로 다른 모듈에 있는 클래스 :
    '우리가 만든 DispatcherServlet을 사용하면 app 패키지 하위에 있는 컨트롤러와 mvc 패키지 하위에 있는 컨트롤러 모두 잘 인식해 작업을 수행한다' 를 테스트하고 싶었는데,
    mvc와 app은 완전히 별개의 모듈로 존재하기 때문에
    mvc 패키지에서 app 패키지에 있는 클래스를 호출하는 게 불가능했어요.

코드로 표현하면

var registry = new HandlerMappingRegistry()
registry.add(new AnnotationHandlerMapping);
registry.add(new ManualHandlerMapping); <- 이게 안됨

이런 이유로 DispatcherServlet의 테스트 코드 작성은 커녕 초기화 코드도 작성하지 못했기 때문에
제가 만든 서블릿에 버그가 있는지 없는지도 확인하기 어려워 다소 난감한 상황입니다.

혹시 제이는 이번 프로젝트처럼 별개의 모듈로 분리된 클래스를 불러오는 방법을 알고 계신가요?

리뷰 시 고려할 점

  • LMS에서는 AnnotationHandlerMapping에서 ControllerScanner를 분리하여 리플렉션 작업을 수행하도록 했지만, 굳이 해야 하는가 싶어 분리하지 않았어요.
  • org.Reflection 라이브러리를 사용하지 않고 자바에서 기본으로 제공하는 리플렉션 메서드만을 사용했습니다. 그러다보니 코드가 매우 길어져서, 그나마라도 가독성을 향상할 수 있도록 변수명을 한글로 작성했어요.
  • 상기한 이유로, 두 버전의 HandlerMapping과 HandlerAdaptor를 가져오는 방법을 몰라서 DispatcherServlet의 초기화 메서드와 init()메서드가 비어있어요.
    대신 service() 메서드에서 HandlerMapping -> HandlerAdaptor -> '컨트롤러 실행' -> '뷰 렌더링 작업' 을 수행하는 DispatcherServlet의 작업 과정을 아는 만큼 작성해 보았어요.

미션을 하면서도 '대체 내가 뭘 하고 있는 거지' 라는 생각만 들어서 얼레벌레 고통스러운 미션이네요.
같이 리뷰 주고받으면서 많은 얘기 나눠요!

@BackFoxx BackFoxx changed the title [MVC 프레임워크 1, 2단계] 여우(조승현) 미션 제출합니다. [MVC 구현하기 1, 2단계] 여우(조승현) 미션 제출합니다. Sep 12, 2023
@BackFoxx BackFoxx deleted the step1 branch September 13, 2023 02:11
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