180107-TIL

Reading time ~2 minutes

오늘 한일

- 반복주기를 활용 한 ATDD 연습

  • 결론적으로 ATDD 연습 자체는 실패했다. 원인은 로그인 유무에 따른 분기가 되는 곳들로 어쩌다 보니 ATDD가 아닌 다른 공부(?)를 하고 말았다.

  • 방법이 없는 건 아니었지만 BasicAuth를 활용해 보고 싶어서 이리저리 고민했지만 결국 성공 하진 못했다.

  • 그러다 포비가 제공 한 테스트 코드들이 제대로 돌아가기 위해 필요한 부분들을 분석해 보게 됐다.

- 일단 알아낸 것들

  • Aspect (아마도…)

    aspect

    @Pointcut에 등록한 경로에 있는 public 메서드들은 doLogging(ProceedingJoinPoint pjp) 메서드 내부에서 실행되며 pjp에 현재 실행되어야 할 메서드에 대한 정보가 담겨 있다.

  • ControllerAdvice

    controllerAdvice

    정확한 타이밍은 모르겠지만(이름에 힌트가 다 있는 것 같지만..) @Exceptionhandler로 등록 해둔 예외 발생 시 @ResponseStatus의 값이 Response의 Status가 된다.

  • handlerInterceptor

    handlerInterceptor

    preHandle(), postHandle(), afterCompletion(), afterConcurrentHandlingStarteddl() 이 존재하며 Object handler에는 현재 수행되어야 할 handler가 담겨 있으며 위의 Pointcut보다 바깥쪽(?)에서 동작한다.

    interceptorRegistry

    위처럼 단순히 빈 등록만 하면 되는 게 아니라 registry에 추가도 해야 한다.

  • Resolver

    resolver

    supportsParameter()가 참이면 resolverArgument()를 수행하며, preHandle 다음 Aspect 이전에 동작한다. 다른 것들은 이름에서 어떠한 특징이 있는지 느낌이 오는데 얘만 잘 안 온다.

  • 그러나…
    어디까지나 포비가 구현해 놓은 코드와 로그를 찍어보며 분석해본 내용일 뿐 인터넷 검색조차 안 하고 한 분석이라 깊이도 없지만 틀릴 확률도 높다. 일단은 수박의 겉핥기만 한 수준이다.


오늘 느낀점

  • ATDD를 연습해보려다가 삼천포로 빠져 버렸다. BasicAuth를 활용해보는 것이 포비 코드 중 일부만 옮겨 오면 될 줄 알았는데 단박에 실패. 조금만 신경 써서 필요한 것들 옮기면 되겠지 했는데 또 실패. 에라 모르겠다는 심정으로 거의 다 옮기다시피 했는데 또 실패….(패지키 이름 등 조금 다른 부분이 있었다)

    그렇게 수 시간을 날려 먹고 오늘 뭐 했나 싶은 생각이 들어 결국 포비의 프로젝트를 이용하여 실습을 조금 진행하다가 카페에서 집에 왔다. 근데 아무리 생각해도 “그게 지금 내가 실패할 정도의 어려운 내용인가?”라는 생각이 자꾸 들어서 에라 모르겠다는 심정으로 어떻게 돌아가는 건지 뜯어보기 시작했다. 결론적으로 확실히 알진 못해도 어떤 식으로 사용하는 건지 느낌은 받은 것 같다. 또한, 며칠 전 Spring DI에 대한 질답 시간에 알게 된 내용들 덕도 본 것 같다.

    이젠 제대로 알려고 하면 검색해보면 될 것 같긴 한데 현재 코드들이 어떻게 돌아가고(순서적인 처리 및 어떻게 연결되어 있는지) 있는지 궁금했던 거라 일단 오늘은 이선에서 만족하고 차후 오늘 본 내용들이 필요하고, 공부해야 할 상황이 오면 오늘의 삽질(?)이 많은 도움이 될 것 같다.

  • 잘 짠 코드인지 아닌지 상관없이 해당 코드가 어떻게 돌아가는지 파악하는 게 즐거운 편인 것 같다. 특히 버그나 에러를 내고 있는 부분을 찾고 수정하는 게 나름 게임의 도전과제를 달성하는 것 같은 기분도 나고 승부욕이 드는 거는 것 같다. (그런 의미에서 내 코드가 아닌 남의 코드가 더 스트레스도 안받고…ㅋㅋ)


내일 할일

  • 정작 중요한 trello의 UML, ERD 작성이 미루어 졌다 이건 진짜 끝내자.(가능하면 하고 자자)

  • 내일은 trello에만 집중