1. 멀티 모듈 yml 설정
프로젝트 구조상 배포 실행되는 모듈은 scm_api, 도메인과 관련된 로직을 관리하는 모듈은 scm_domain입니다.
그렇기 때문에 main 클래스는 scm_api에 존재하게 되는데요.
앞서 말씀드렸다 싶이 main 클래스가 scm_api에 존재하기 때문에 환경 변수 등을 application.yml 파일에 등록하는 경우 scm_api의 resource에 있는 yml파일에 작성을 해야합니다.
하지만 scm_api에는 swagger와 같은 환경 변수가 필요하고, scm_domain에는 jpa와 같은 환경 변수가 필요하기 때문에 각각 분리해서 관리하는게 더 효율적이라고 생각했습니다.
@SpringBootApplication
@ComponentScan(basePackages = {"com.scm.api", "com.domain"})
public class ScmApplication {
public static void main(String[] args) {
System.setProperty("spring.config.name", "application, application-domain");
new SpringApplicationBuilder(ScmApplication.class).run(args);
}
}
System.setProperty를 추가해서 각 모듈에 존재하는 application.yml을 등록해서 분리해서 관리가 가능하게 됩니다.
좀 더 깔끔하게 적용하는 방법으로는 SpringApplicationBuilder에 scm_domain에서 사용할 application.yml을 properties로 등록해주는 방법이 있습니다.
@Configuration
public class DomainBasePackage {
public static Map<String, Object> getSpringRunnerProperties() {
Map<String, Object> additionalProperties = new HashMap<>();
additionalProperties.put("spring.config.location", "classpath:/domain-config/,classpath:/");
return additionalProperties;
}
}
@SpringBootApplication
public class ScmApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ScmApplication.class)
.properties(DomainBasePackage.getSpringRunnerProperties())
.run(args);
}
}
scm_domain의 패키지 경로 상에 DomainBasePackage를 설정파일로 선언합니다.
그리고 Map으로 spring.config.location이라는 key값으로 application.yml을 추가할 설정파일 경로를 value로 넣어줍니다.
domain 환경 설정 파일을 SpringApplicationBuilder의 properties를 추가해줌으로써 애플리케이션 실행시 scm_domain의 환경변수 값들을 추가해서 넣어줄 수 있습니다.
후자의 방법이 많은 모듈을 관리할때 효율적일것같다고 생각합니다.
감사합니다.
참조
https://devlog-wjdrbs96.tistory.com/435
[Spring] 멀티 모듈에서 모듈별 yml 파일 관리하는 법
Multi module에서 yml 파일 관리하는 법 이번 글에서는 Multi-Module을 사용할 때 모듈 별 yml 파일 관리하는 법에 대해서 정리해보려 합니다. api 모듈 application.yml domain 모듈 application.yml 만약에 위와 같이
devlog-wjdrbs96.tistory.com
'프로젝트' 카테고리의 다른 글
[토이프로젝트] - 6. 인증 (0) | 2024.11.23 |
---|---|
[토이프로젝트] - 5. 멀티모듈 Bean 등록 (1) | 2024.10.13 |
[토이프로젝트] - 3. Vue - SpringBoot 연동 (1) | 2024.10.13 |
[토이프로젝트] - 2. Vue 설치 (8) | 2024.10.09 |
[토이프로젝트] - 1. 멀티모듈 세팅 (4) | 2024.10.09 |