Rlog

[Spring] MultiModule 의존성 순서 설정으로 인한 오류 본문

Spring

[Spring] MultiModule 의존성 순서 설정으로 인한 오류

dev_roach 2022. 1. 17. 09:52
728x90

이번에 Spring MultiModule 을 진행하면서 계속해서 Jpa 설정에 관한 오류를 먹고 있었다.

아무리 application.yml 에 설정을 해도 설정이 안먹는 오류가 있었는데

위와 같이 설정을 해줘도 DataSource URL 이 없다고 나온다.

일단 멀티모듈 구조의 패키지를 한번 살펴보도록 하자.

일단 Api 는 Web 계층으로 쉽게 말하면 Controller 계층에 가깝고 Service 와 Entity 는 

이름 그대로 Entity(Persistence 계층) , Service(Domain Layer) 라고 생각하면 편하다.

 

문제는 Service 에서도 Transactional 을 사용해야 해서 JPA 설정을 가지고 있어서

처음에는 아 Service Module 에도 entity 의 application.yml 값을 넘겨주어야 하나? 라는 의문을 가지게 되었다.

그래서 아래와 같이 Service Module 에 application.yml 에 값을 추가해주니 정상적으로 실행됬다.

그런데 여기서 큰 의문점이 하나 들었다.

Spring Bean 은 분명 Singleton 으로 관리되서 DataSource 나 EntityManager Configuration 값을 동일하게 가질 텐데 왜 Entity 에서 설정해준 Bean 을 사용하지 않지..? 근데 분명 Spring Logging 을 보면 Hibernate Datasource 를 두번 만들지는 않는 것 처럼 보인다.

따라서 뭔가 빈이 Resolve 되는 순서가 달라서 Entity -> Service 가 Resolve 되어야 하는데 Service -> Entity 가 Resolve 되니까 설마 Service 에서 SessionFactory 나 DataSource 를 직접 만들려해서 오류가 나는건가 싶었다.

 

그래서 Service Layer 의 application.yml 을 제거하고 최상단의 api module 의 gradle 의 implementation 순서를 바꿔보았다.

기존

변경후

이제야 정상적으로 실행되는 것을 확인할 수 있었다.