programing

Spring boot application.properties maving multi-module 프로젝트

javajsp 2023. 3. 10. 21:04

Spring boot application.properties maving multi-module 프로젝트

멀티 모듈 프로젝트에서 스프링 부츠를 사용하고 있습니다.

공통 도메인 오브젝트 클래스, 저장소 및 데이터 소스, JPA, 휴지 상태 등의 구성을 가진 도메인 액세스 모듈이 있습니다.이러한 설정은 application.properties를 사용하여 이루어집니다.이 설정을 모두 공통 모듈에 넣어 상위 레벨의 모듈에서 이러한 공통 설정을 복제하지 않도록 했습니다.

도메인 모듈을 빌드할 때는 이 모든 것이 정상적으로 동작하기 때문에 테스트 유닛에 설정이 올바르게 로드됩니다.

그러나 이 문제는 상위 레이어 모듈에서 도메인 모듈을 사용하려고 할 때 시작됩니다.이러한 모듈에는 자체 application.properties가 있습니다.이것은 도메인모듈 application.properties가 아닌 스프링이 그것들을 로드한다는 것을 의미합니다.이것은 상위 모듈 application.properties만 로드되기 때문에 데이터 소스가 설정되지 않음을 의미합니다.

우리가 원하는 것은 도메인 모듈과 더 높은 수준의 애플리케이션 속성을 스프링까지 로드하는 것입니다.하지만 우리는 이것을 쉽게 할 수 있는 방법을 찾을 수 없다.

이것은 일반적인 문제일 것이라고 생각합니다만, 이 문제에 대해 추천할 만한 해결 방법이 있을까요?

spring-boot을 사용하고 있기 때문에 솔루션에서는 applicationContext.xml 대신 주석을 사용하는 것이 이상적입니다.

아마 당신은 단지 그것을 사용하는 것이 좋을 것이다.application.properties최상위 수준의 애그리게이터 프로젝트에서요?

언제든지 사용할 수 있습니다.@PropertySource사용 사례에 고유한 이름으로 구성합니다.

또는 프로젝트마다 다른 이름을 사용하여 최상위 프로젝트에서 풀로 붙일 수 있습니다.spring.config.location(소수 구분).

저는 @Dave Syer에 동의합니다.애플리케이션을 여러 모듈로 분할하는 발상은 각각 독립된 유닛(이 경우 jar 파일)이라는 것입니다.이론적으로 이러한 각 jar 파일을 각각의 소스 저장소로 분할하여 여러 프로젝트에서 사용할 수 있습니다.이러한 도메인 클래스를 웹 응용 프로그램과 배치 응용 프로그램 모두에서 재사용하는 경우 모든 APPLICATION 수준 구성이 각 모듈에 저장되어 있으면 재사용 가능성이 크게 감소합니다.

IMO만 어플리케이션으로 동작하기 위해 필요한 모든 설정을 포함해야 합니다.다른 모든 설정은 단순히 의존관계로 필요에 따라 리믹스하여 재사용할 수 있습니다.

모듈에 대해 특정 프로파일을 정의하고 application.properties 파일을 사용하여 spring.profiles.include 속성을 사용하여 활성화되는 프로파일을 지정하는 방법도 있습니다.

domain-module
- application.properties
- application-domain.properties

app-module
- application.properties
- application-app.properties

application-properties 파일로 이동합니다.

spring.profiles.include=domain,app

언급한 바와 같이 하는 것 에) 할 수 있는 다른 에 Dave Syer와 같은 을 붙이는 입니다.domainConfig.properties.

해서 이름 수 .application.properties.

domainConfig.properties도메인 모듈이 자체적으로 테스트하는 데 필요한 모든 데이터가 포함됩니다. 개의 코드 통합 중 하나를 하여 쉽게 할 수 .@PropertySource:domainConfig.properties는 ★★★★★★★★★★★★★★★★★용application.properties) 또는 의 「」을 실시합니다.PropertySourcesPlaceholderConfigurer필요한 모든 속성 파일을 참조하는 Java Config의 bean(이 튜토리얼을 참조해 주세요)

로, 이 in in in in in in in in래.2.4spring.config.import

application.name=myapp
spring.config.import=developer.properties

# import from other module
spring.config.import=classpath:application-common.properties

★★★★★★★★★★★★★★★★★★★★★★.spring.config.activate.on-profile

spring.config.activate.on-profile=prod
spring.config.import=prod.properties

참조: https://spring.io/blog/2020/08/14/config-file-processing-in-spring-boot-2-4

언급URL : https://stackoverflow.com/questions/23138494/spring-boot-application-properties-maven-multi-module-projects