[SPRING] Spring에서 application.properties를 상속받는 방법?
SPRINGSpring에서 application.properties를 상속받는 방법?
일반적인 구성을 정의하는 application.properties를 갖는 commons 라이브러리를 만들면. 처럼:
spring.main.banner-mode = off
이러한 공용 라이브러리를 포함하는 다른 프로젝트에 이러한 속성을 상속하려면 어떻게해야합니까?
메이븐 :
<project ...>
<groupId>de.mydomain</groupId>
<artifactId>my-core</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<!-- this one holds the common application.properties -->
<groupId>my.domain</groupId>
<artifactId>my-commons</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
내 커먼에서 내 코어로 구성을 상속하려면 어떻게해야합니까?
해결법
-
==============================
1.해결 방법은 공유 속성을 다른 이름 (여기서는 application-shared.properties)을 사용하여 포함하는 것입니다.
해결 방법은 공유 속성을 다른 이름 (여기서는 application-shared.properties)을 사용하여 포함하는 것입니다.
공유 라이브러리에서 :
@SpringBootApplication @PropertySource(ResourceUtils.CLASSPATH_URL_PREFIX + "application-shared.properties") //can be overridden by application.properties public class SharedAutoConfiguration { }
기본 앱 :
@SpringBootApplication @Import(SharedAutoConfiguration.class) public class MainAppConfiguration extends SpringBootServletInitializer { }
이렇게하면 공유 / 공유 설정이로드되지만 주 앱의 application.properties에서 재정의 할 수는 있습니다.
이유는 모르겠지만 spring.main.banner-mode 속성에서는 작동하지 않지만 다른 모든 속성에서는 제대로 작동합니다.
-
==============================
2.이것을 스프링으로 시도 할 수 있습니다.
이것을 스프링으로 시도 할 수 있습니다.
src / main / resources / application.properties를 언급 한대로 공통 모듈에 정의 할 수 있습니다. 그것은 그것에 의존하는 다른 프로젝트를위한 classpath에 존재할 것입니다.
그런 다음 공통 모듈에 의존하는 다른 프로젝트에서 @PropertySource Annotation을 사용합니다.
@Configuration @PropertySource("classpath*:META-INF/spring/properties/*.properties") public class Config { ... }
또는 XML 구성 :
<context:property-placeholder location="classpath*:META-INF/spring/properties/*.properties"/>
클래스 경로 지정 디렉토리에있는 모든 구성 파일을 가져와야합니다.
또한 classpath에 두 개의 동일한 파일을 가질 수 없다는 것을 알아야합니다. 당신은 갈등을 겪을 것입니다.
예를 들어,이 상황은 충돌을 발생시킵니다.
프로젝트 A (프로젝트 B에 따라 다름) :
프로젝트 B :
application.properties 파일의 이름을 바꾸거나 다른 디렉토리에 넣어야합니다.
from https://stackoverflow.com/questions/44718763/how-to-inherit-application-properties-in-spring by cc-by-sa and MIT license