Closed JiwoonKimKr closed 3 months ago
배송조회 관련, 최근 배송 조회를 일단 목록으로 뿌리고 접근하는 방식으로 추가; 기존 "/delivery-status-view"에 "/delivery-status-view"로 넘어가도록 변경
주문 내역 조회 관련된 부분도 배송 조회처럼 Figma 기획안 흐름부터 수정; 헷갈리지 말아야 ㅠㅡㅜ
AOP(Aspect-Oriented Programming)구현을 간과하고 있었다. 이게 스프링 기본 3대 개념 중 하나였는데, 공부를 안 했다. DI(Dependency Injection)와 PSA(Portable Service Abstraction) 까지 포함해 3개 개념이 핵심이다. DI는 controller service repository같은 기존 어노테이션들을 쓰거나 component같이 직접 지정할 수 있는 간단한 방법들을 쓰는 걸로 쓸 수 있었다. PSA는 추후 발생할 변화에 무관하게 일관성 있는 흐름으로 서비스를 제공하는 방법이란다. DB를 오라클을 쓰다가 MySql이나 PostGreSql로 가도 온전하게 쓸 수 있는 유연성을 말한 듯 싶다. 실제로 스프링 라이브러리들은 꽤 범용성이 높아 보였다.
이 AOP이 내가 직접 건드려야 하는 부분이었다. 중복되는 특정 기능이나 부분들이 있다면 일련의 Aspect로 객체를 생성한다. 해당 Aspect 객체가 다양한 객체들의 중복되는 메소드 또는 필드를 대체할 수 있다. 고양이도 골골 소리를 내듯이 냉장고도 골골 소리를 내곤 한다. ‘골골Song’이라는 AOP객체를 만들어서 대리자(Proxy)를 내세워, 고양이와 냉장고에 ‘골골송’이란 annotation을 붙이면 기능을 할 수 있는 방식이다.
중복되는 걸 어떻게든 찾아서 이 AOP를 구현해야 한다. 이 핵심 가치 3가지는 기본적으로 현 프로젝트에서 구현하려 시도했다는 걸 보여야 한다ㅠㅡㅠ 왠지 프로젝트가 잘 풀린다 싶었다ㅠㅠ
구현해야하는 것들 (생각나는 대로)
로그인 또는 결제 페이지에 오늘 배운 TimeTrace AOP 기능을 써보려고 했는데, 스프링의 StopWatch를 활용하는 것이 익숙하지 않아 힘들었다. 여러 시도 끝에, StopWatch의 자식 클래스를 utils 페키지에Spring Bean으로 등록한 후에, StopWatch 기능을 활용했는데 일단 구현은 성공했다. 그런데 오늘 배운 것과는 달리, 나는 start와 stop를 다른 annotation(메소드)에서 각기 호출해야 한다. 그래서 고민이 많다. 동일한 사용자에게 타이머가 적용될까, 소위 Thread-safe한 게 맞나 걱정이었다. 너무 모르는 게 많았다ㅠㅜㅜ
주문 상세 조회 마크업 & API 작성(수정) 주문상세 관련 필터링들 마져 추가해야