[요구사항]
- 해외직구를 위한 원화 결제 준비 기능 개발
- 주문번호, 외국통화종료, 외국통화기준 결제 금액
1. 기본로직
환율 가져와서, 환율 값 계산하고, 환전된 원의 유효기간을 구한다.
여기서 url에서 가져오는 환율정보를 가져오는 기술적 로직과
업무적로직은 향후 추가 될 수 있다.
그래서 아래와 같이 구조 개편을 한다.
2. 인터페이스 객체지향 의존성역전원칙 적용 ( Object Factory - IOC/DI도 적용)
PaymentService 에 ExRateProvider를 구현하고 환율 구하는 부분을 클래스로 따로 뺀다. 이렇게 하면 환율 적용하는 방식의 변동에 유연하게 대응할 수 있다. (환율 수수료 무료 등 정책에 유연한 대응)
3. 객체지향설계 원칙중 개방폐쇄원칙을 적용해서 변하는 부분과 변하지 않는 부분을 템플릿패턴을 적용해서 분리한다.
템플릿 패턴으로 인해서 환율을 가져요는 부분을 변경한 효과는 다음과 같다.
1. 보다 치밀하게 에러체크가 되고, 견고한 코드가 된다.
2. api 가져오는 부분과 , 이를 KRW로 JSON형태로 치환하는 형태를 분리하면서 향후 확장가능성에 유연한 형태를 만든다.
* 서비스 추상화와 AOP
서비스는 애플리케이션, 도메인, 인프라 서비스 가 있다.
메일, 캐시, 트랜잭션, 메시징은 추상화 대상이다.
아래와 같은 트랜잭션 프록시 역할을 사실상 @Transactional을 적용하면 해결된다.
이것은 모두다 적용하거나, 다건중 하나라도 실패하면 모두 rollback 하는 것이다.
* 앞으로 더 공부할 모듈
* 스프링 라이브러리 공부할것
이상 토비의 스프링 6에서
인텔리제이 플러그인 추천 spring initializer~!
한 것을 알리고 회고를 마친다.
https://github.com/MyoungSoo7/spring61-ref
'4차산업혁명의 일꾼 > 웹개발' 카테고리의 다른 글
스프링부트 2.x 연구 (2) | 2024.12.04 |
---|---|
스프링부트 버전 1.x 대 연구 (0) | 2024.12.04 |
IT엔지니어를 위한 AWS운영의 기본과 노하우 정리 (0) | 2024.10.23 |
검색엔진과 챗GPT 동시에 검색하기 (2) | 2024.09.25 |
인텔리제이 오랜만에 복습~! 알짜 사용~! (2) | 2024.09.25 |