kingbbode / kingbbode.github.io

my site
https://kingbbode.github.io
MIT License
10 stars 1 forks source link

posts/multi-module #10

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

멀티모듈 설계 이야기 with Spring, Gradle - Kingbbode

개발 블로그

https://blog.kingbbode.com/posts/multi-module

wicksome commented 4 years ago

안녕하세요. 먼저 좋은 글 감사합니다. 👍 저도 멀티모듈에 관해서 고민하다가 궁금한 것이 있어서 댓글 남깁니다.

  1. 각 client들의 spring-boot 디펜던시는 어떻게 두셨나요?
  2. 공통적인 @Service 가 있는 모듈이 있을것 같은데, 이 모듈을 사용하는 app 모듈과의 디펜던시는 어떻게 두셨나요?

1 과 같은 경우에서 제가 고민한 결과는 client들은 WebClientRestTemplate 정도의 디펜던시만 있을 것 같아, 사용하는 각각의 app 모듈에서 직접 빈을 생성하도록 했습니다.

@Configuration
class ClientBeanConfig {
  @Bean
  fun mailClient(): MailClient = MailClient()
}

2의 경우에는 @Service 어노테이션을 가진 모듈인데요. 이 모듈은 결국 spring 디펜던시를 추가해야할 것 같은데, 이 때 app 모듈과 spring version이 충돌날 것 같은데 어떻게 해결하셨는지 궁금합니다.. 이 경우는 도통 괜찮은 방법이 안떠올르더라구요...

kingbbode commented 4 years ago

@wicksome

안녕하세요 :)

저같은 경우는 모두 스프링부트 프로젝트여서 core 모듈을 제외한 모든 모듈에서 spring-boot-starter 기본 의존을 갖도록 설정해두었습니다.

gradle 루트에서 dependency management 를 해주기때문에 버전 간 충돌은 없습니다. 혹시 어떤 설정으로 버전 충돌이 생기시나요?

wicksome commented 4 years ago

아! 그럼 client들한테 @Service 어노테이션은 다 붙어있겠군요?

kingbbode commented 4 years ago

@wicksome

가급적 하위 모듈에서는 Component 어노테이션 대신 Configuration 을 통한 Bean 선언을 해주고 있습니다 :)

Conditional~ 조건으로 사용하는 모듈에서 구현체를 변경시킬 수 있는 유연함을 제공하기 위함입니다.