
이번 섹션에서는 Spring 의 이점을 알아보기 위해 한 예제를 Java 로만 만들어 본다.
회원 등급에 따른 할인 정책 (tip)
지금 요구사항에
등급에 따른 할인 정책이fix되지 않았다. 그러니까 interface 이용해서역할과 구현을 분리하는 것이 좋다.
음... 요구 사항 그대로 만들면 된다.
Repo 들은 문제에서 말한대로 DB, In-memory 둘다 사용할 수 있게 interface 를 먼저 정의했고, Service 들은 변경될 가능성이 낮다 고 생각해 안 정의했다.
또 DB 외래키 처럼 엔티티간 연관관계를 단단히 하고 싶어서 Repo 간 의존성을 만들었다.
public class ShippingDetailRepositoryMap
implements ShippingDetailRepository {
private final ProductRepository productRepo;
private final ShippingSummaryRepository shippingSummaryRepo;
/* ... */
}
만드는게 어렵진 않았지만 Java 가 왜 Horse factory 라 불리는지 알 수 있었다.
간단한건데 뭐 이리 만들어야 되는게 많어
그러니까 프레임웍이 있는거겠지?
이번 절의 핵심은 결국 Spring 의 역할이 무엇인지 알려주는 데 있다고 생각한다.
강의에서는 AppConfig 를 통해 역할과 구현을 분리하고 나중에 변경이 필요할 때 구현만 바꾸는 형태로 편하게 사용할 수 있는걸 보여준다.
즉, AppConfig 의 역할이 Spring 이 해주는 것과 동치한다는 것이다.
물론 Spring 이 제공하는 역할은 이거보다 더 많지만 그 핵심 중 하나임은 분명하다.
어떤 새로운 내용을 배우거나 하진 않았지만 처음 Spring 을 배우는 사람 에게는 Spring 이 왜 좋은지 확실히 체감시켜 줄 것 같다.