이번 섹션에서는 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 이 왜 좋은지
확실히 체감시켜 줄 것 같다.