[요구사항]
- 해외직구를 위한 원화 결제 준비 기능 개발
- 주문번호, 외국통화종료, 외국통화기준 결제 금액
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
GitHub - MyoungSoo7/spring61-ref: 스프링6 토비
스프링6 토비. Contribute to MyoungSoo7/spring61-ref development by creating an account on GitHub.
github.com
'4차산업혁명의 일꾼 > Spring' 카테고리의 다른 글
스프링부트 2.x 연구 (2) | 2024.12.04 |
---|---|
스프링부트 버전 1.x 대 연구 (0) | 2024.12.04 |
JPA 간단정리3 (2) | 2024.09.16 |
스프링시큐리티6(OAuth2)의 속도, 자원절감, 보안향상, 권한조정의 이점 (0) | 2024.07.21 |
클라우드시대에 2025년부터 지원 끊기는 이유 WebFlux(Spring5), 클라우드 시대에 절약과 함께 빛나는 AOT엔진의 Spring6 ~! (0) | 2024.07.18 |