스프링 부트 외부 구성
스프링 부트 앱에 외부 속성 파일을 로드하려고 합니다.처음에는 구성 클래스에서 @PropertySource를 사용했습니다.그러나 이제 이 주석을 제거하여 클래스가 위치에 종속되지 않도록 합니다.그래서 저는 다음을 사용하려고 했습니다.
java -jar my-boot-ws.war --SPRING_CONFIG_NAME=file:///Users/TMP/resources/
이 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html 문서를 기반으로 하지만 다음 오류가 발생합니다.
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
주석을 사용하는 것은 잘 작동하지만 저는 정말로 그것에서 벗어나고 싶습니다.이것에 대한 어떤 도움도 좋을 것입니다.
감사해요.
수정 *********
죄송합니다. 복사 붙여넣기 오류입니다. 위 명령은 다음과 같습니다.
java -jar my-boot-ws.war --spring.config.location=file:///Users/TMP/resources/
구성 파일의 이름을 변경하려는 것이 아니라 위치를 추가하는 것입니다.여기에 설명된 바와 같이:
spring.config.location에 (파일이 아닌) 디렉토리가 포함된 경우 디렉토리는 /로 끝나야 합니다(로드되기 전에 spring.config.name 에서 생성된 이름으로 추가됩니다).
명령줄에서 전달된 --spring.config.location에서 ${spring.application.name }.properties 파일이 로드된다는 의미로 해석했습니다.
좀 더 구글링한 후에 이 Spring Boot와 여러 개의 외부 구성 파일을 발견했는데, 이 파일은 다음과 같은 올바른 사용법을 나타냅니다.
java -jar my-boot-ws.war --spring.config.location=file:///Users/TMP/resources/myFile.properties
저는 --spring.config.location이 지정된 디렉토리에 다른 속성 파일을 로드할 것이라는 느낌을 받았습니다.내가 언급한 링크의 게시물에 따르면, 이것은 사실이 아니다. 만약 디렉토리가 지정되어 있다면 그것은 application.properties가 검색되는 곳이다. 그러나 여기에 있는 문서 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html 은 스프링 부트 앱이 먼저 클래스 경로를 살펴보고 가능하다면 앱 이름을 가져와 해당 이름을 기반으로 추가 속성 파일을 얻을 것이라고 암시하는 것 같다.
하지만 일단 파일 이름을 지정하면 모든 것이 정상적으로 작동했기 때문에 제가 착각한 것 같습니다.
명령줄에서 다음 속성을 사용하여 추가 부팅 구성 파일을 언급해야 합니다.
--spring.config.location="file:/path/to/application.properties"
대안은 다음과 같습니다.
-Dspring.config.location="file:/path/to/application.properties"
문자는 소문자이고 단어 구분 기호는 마침표입니다.
그렇지 않으면 이미 사용한 키로 환경 변수를 사용할 수 있습니다.
*nix 시스템의 경우:
export SPRING_CONFIG_NAME=file:/path/to/application.properties
Windows OS의 경우:
set SPRING_CONFIG_NAME=file:/path/to/application.properties
일반적인 문제가 아닐 수도 있지만, 저는 직면했습니다.또한 당신은 반드시 가지고 있어야 합니다.application.properties
당신이 그것을 대체할 때 조차 당신의 클래스 경로 안에.--spring.config.name
(저는 민감한 정보로 인해 무시당했습니다.)
실행 방법 내부에 Args가 통과하는지 확인합니다.
public class GemFireTestLoaderApplication {
public static void main(String[] args) {
SpringApplication.run(GemFireTestLoaderApplication.class, args);
}
}
xml 주석으로 구성하거나 먼저 제거한 경우
<!-- <context:property-placeholder location="classpath:config.properties" /> -->
<!-- <context:property-placeholder location="file:/data/xxx/vaquarkhan/dataLoader/config.properties" /> -->
속성 이름을 전달하는 데 사용할 수 있는 다음 명령
3.1)
java -jar GemfireTest-0.0.1-SNAPSHOT.jar --spring.config.location=file:///C:/data/xxx/vaquarkhan/dataLoader/test/config.properties
3.2)
java -jar GemfireTest-0.0.1-SNAPSHOT.jar --spring.config.location=file:///C:/data/xxx/vaquarkhan/dataLoader/test/config.properties
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
spring.config.name=spring
spring.config.location=classpath:/config/
서버를 실행하는 동안 구성 폴더 spring.properties 파일을 사용할 수 있습니다. 이 속성 파일은 로드되지 않습니다.
언급URL : https://stackoverflow.com/questions/26870785/spring-boot-external-config
'programing' 카테고리의 다른 글
상위 div를 기준으로 "위치: 고정" div의 너비 설정 (0) | 2023.08.08 |
---|---|
jQuery로 select 옵션의 레이블을 가져오는 방법은 무엇입니까? (0) | 2023.08.08 |
초점을 잃었을 때 DOM에서 사라지는 html 요소를 어떻게 검사할 수 있습니까? (0) | 2023.08.08 |
이 오프셋 구현이 작동하는 이유는 무엇입니까? (0) | 2023.08.08 |
Nodejs - 리디렉션 URL (0) | 2023.07.29 |