interface 로 행위를 추상화시키면, 각 구현체에 대한 오버엔지니어링이 되지 않을지?
1) 패키지 구조 변경 요청
AS-IS
fillin
api
domain
account
user
studio
...
위와 같이 representation 과 관련된 class (Controller, interceptor, argumentResolver, request/response 는 api package 에,
이 외 각 도메인별 응용, 도메인모델, 엔티티 등을 domain package 하위에 각각 위치시켰음
TO-BE
fillin
api
domain
account
user
studio
...
core
core package 추가
-> 각 도메인별 모델 (POJO class, interface) 를 core 로 분리해 패키지를 별도로 구성합니다.
이유는, 각 도메인에서 모델들을 서로 공유하기 위함입니다.
core 에서는 각 도메인에서 핵심적인 모델, 행위만 정의하고, 그 구현체는 각 도메인의 응용, 인프라 level 에서 필요에따라 구현해 사용합니다.
ex) User 를 조회한다.
core.user 에는 User, UserRepository interface 만 구성
domain.user 에서는 UserMySQLRepository 를 구현 (UserRepository 에 정의된 행위를 MySQL 로써 접근하는 구현체)
고민
1) 패키지 구조 변경 요청
AS-IS
위와 같이 representation 과 관련된 class (Controller, interceptor, argumentResolver, request/response 는 api package 에, 이 외 각 도메인별 응용, 도메인모델, 엔티티 등을 domain package 하위에 각각 위치시켰음
TO-BE
core package 추가 -> 각 도메인별 모델 (POJO class, interface) 를 core 로 분리해 패키지를 별도로 구성합니다. 이유는, 각 도메인에서 모델들을 서로 공유하기 위함입니다. core 에서는 각 도메인에서 핵심적인 모델, 행위만 정의하고, 그 구현체는 각 도메인의 응용, 인프라 level 에서 필요에따라 구현해 사용합니다.
2) layer 간 dto 정의