programing

spring-boot에 application.properties 파일을 여러 개 추가하는 방법

lastcode 2023. 3. 28. 21:49
반응형

spring-boot에 application.properties 파일을 여러 개 추가하는 방법

스프링 부트 어플리케이션은 여러 모듈로 분할되어 있습니다.메인 모듈은 응용 프로그램을 실행하고 있습니다.application.properties파일명을 지정합니다.서브모듈에 다른 속성파일을 추가하여 해당 모듈에 속하는 속성을 분리할 수 있는지, 그리고 (그것이 아니기 때문에) 어떻게 동작시키는지 궁금합니다.

+main_module
  +src
    +main
      +java
        +my/package/Application.java
        +resources/application.properties
+support_module
  +src
    +main
      +java
        +resources/application.properties

자, 이것이 현재 상황입니다.모듈의 속성 파일을 명확히 합니다.support_module판독되지 않아NoSuchBeanDefinitionException다른 속성 파일에 콘텐츠를 저장하면 모든 것이 정상적으로 작동합니다.

Maven이나 Gradle을 사용할 때 당신이 하려는 것은 효과가 없습니다.그 이유는 아티팩트(스프링 부트를 사용하고 있기 때문에 가장 가능성이 높은 jar)가 생성되면 1개만 존재하기 때문입니다.application.properties파일을 루트에 저장합니다.

지원 모듈의 속성 파일 이름을 변경한 다음 해당 파일도 검색하도록 Spring Boot을 구성하거나(이것 또는답변에서 포인터를 확인), 빌드 도구에 대한 일종의 병합 작업(아마도 이와 같은 작업)을 사용하는 것이 좋습니다.

문제는 바로 @geoand의 설명입니다.스프링 부트 로드 최상위 레벨application.properties다른 jar에 있는 정확한 이름의 속성 파일은 무시합니다.

그러나 이 문제를 어떻게 해결할지에 대한 구체적인 실장을 찾지 못했기 때문에 실장을 알고 싶은 분들을 위해 준비했습니다.

다음 프로젝트 구성을 고려하십시오.

+main_module
  +src
    +main
      +java
        +my/package/Application.java
      +resources/application.properties
+module_aa
  +src
    +main
      +java
        +my/package/config/ModuleAAConfig.java
      +resources/module_aa.properties
+module_bb
  +src
    +main
      +java
        +my/package/config/ModuleBBConfig.java
      +resources/module_bb.properties

각 서브모듈의 속성을 올바르게 로드하려면@PropertySource각 모듈의 구성에 대한 주석:ModuleAAConfig.java, ModuleBBConfig.java.

예:

ModuleAAConfig.java

package my.package.config;

@Configuration
@PropertySource(
    ignoreResourceNotFound = false,
    value = "classpath:module_aa.properties")
public class ModuleAAConfig {}

ModuleBBConfig.java

package my.package.config;

@Configuration
@PropertySource(
    ignoreResourceNotFound = false,
    value = "classpath:module_bb.properties")
public class ModuleBBConfig {}

보너스:

프로파일 고유의 속성을 로드하려면 다음과 같은 스프링 변수를 사용합니다.

@PropertySource("classpath:module_aa-${spring.profiles.active}.properties")

spring.config.location 환경 속성(디렉토리 위치 또는 파일 경로의 콤마 구분 목록)을 사용하여 명시적인 위치를 참조할 수도 있습니다.

$ java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

상세한 것에 대하여는, 여기를 클릭해 주세요.

Spring Boot은 속성 파일을 다음 순서로 읽습니다.(Spring Boot in Action)

  1. 외부적으로는 응용 프로그램이 실행되는 디렉토리의 /config 서브디렉토리에 있습니다.
  2. 외부적으로는 응용 프로그램이 실행되는 디렉토리
  3. 내부적으로 "config"라는 이름의 패키지로
  4. 내부적으로 클래스 패스의 루트에 있습니다.

목록은 우선순위로 정렬됩니다(목록의 상위 위치에 정의된 속성은 하위 위치에 정의된 속성보다 우선합니다).

래 치 so배 placing그서?application.properties in a 에 있어서config하위 디렉터리가 더 높은 우선 순위를 줄 것이다.서브디렉토리에 의해, 우선 순위가 높아집니다. In the following configuration, the 다음 구성에서는application.properties부에서module_a우선 순위를 매기다우선합니다. You can add common defaults in 에서 공통 기본값을 추가할 수 있습니다.application.properties을 「컨피규레이션파일」에으로써, .config/application.properties.

+common_module
  +src
    +main
      +java
      +resources/application.properties
+module_a
  +src
    +main
      +java
        +my/package/Application.java
      +resources/config/application.properties

을 보다 할 수 .EnvironmentPostProcessor이치노

자세한 답변은 이쪽에서 확인하시기 바랍니다.봄에 application.properties를 상속하는 방법

★★application.properties 할 수 , ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

 application.properties 
 application.yml

같은 공예품에서요이것은 문제를 분리하는 데 도움이 될 수 있습니다.

.spring.config.import 집에서는application.properties추가 속성 파일을 가져왔습니다.

spring.config.import=file:./src/main/resources/application-local.properties

언급URL : https://stackoverflow.com/questions/33229793/how-to-add-multiple-application-properties-files-in-spring-boot

반응형