일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kotlin
- go https 구현
- JPA
- 직접 코드로 구현
- https implement
- resizer 구현
- 객체지향
- https go
- MySQL
- InnoDB
- Mutation testing
- Test
- image resizer with go
- https 서버 구현
- standard input
- IntelliJ
- Pitest
- resize image with go
- ruby
- 오블완
- AES-GCM
- 코틀린
- Java
- standard output
- 자바
- cli 만들기
- HTTPS
- 돌연변이 테스팅
- https 실습
- 대칭 키 알고리즘
- Today
- Total
Rlog
[Spring] MultiModule 의존성 순서 설정으로 인한 오류 본문
이번에 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 순서를 바꿔보았다.
기존
변경후
이제야 정상적으로 실행되는 것을 확인할 수 있었다.
'Spring' 카테고리의 다른 글
MySQL 으로 형태소 분석기 없는 자동완성만들기 (0) | 2022.02.24 |
---|---|
Spring 에서 왜 Private Method 는 Cglib Proxy 에 포함이 되지않을까? (0) | 2022.02.22 |
Redisson 으로 분산 Lock 구현하기 (0) | 2022.02.10 |
[Spring Batch] Data 를 CSV 파일로 만들기 (0) | 2022.01.23 |
멀티 모듈 Project 에서 Bean 이 Resolve 되지 않을때 해결 (1) | 2022.01.15 |