
위는 현재 진행중인 멀티 모듈 프로젝트의 모듈 구조이다. 평소와 같이 개발을 진행하던 도중, 예외 처리 및 에러 핸들링을 하는 과정에서 다음의 문제가 발생했다.
우선 api 모듈의 Controller단에서 domain 모듈의 Service단을 호출하고, Service단의 메소드에서 try-catch문으로 예외 발생을 감지하고, 해당 오류를 support-api 모듈에 정의된 Api Response 클래스로 감싸서 반환한다.
Service 단에서의 여러 분기(없는 Entity 조회, 권한 부족 등)에 따른 예외를 발생시키기 위해 직접 구현한 ErrorType 코드, Exception 클래스가 필요했다.





코드에 중복성이 생기게 되어 좋은 코드는 아니다.
Custom Exception 관련 코드 중 하나의 클래스인 ErrorType에 정의된 코드 중 DEFAULT_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, ErrorCode.E500, "An unexpected error has occurred.", LogLevel.ERROR) 와 같이 HttpStatus enum을 사용하려면 'org.springframework.boot:spring-boot-starter-web' 의존성을 주입해야 한다.
support-domain 모듈은 기본적으로 spring boot 의존성을 모두 배제하고 순수 자바코드만 사용하기로 컨벤션이 정의가 되어있던 상태라, 의존성을 주입하기 애매한 상황이다.

ErrorType이 필요하기에 순환 참조만 주의하여 support-api 모듈에 support-error 모듈을 주입하면 Solution #1의 문제도 해결할 수 있다.