본문 바로가기
java

springboot jar파일 외부에서 properties 적용

by 후린트 2024. 4. 15.
반응형

springboot를 사용하고 jar파일로 배포를 진행하는 프로젝트에서 
디비의 접속 URL을 변경해야 하는 이슈가 생겼다.

현재 배포된 jar파일은 수정하지 않고, 수정한 properties만 적용하는 방법이 없을까 하여 검색하여
아래 문서에서 해당 내용을 찾게 됨 
https://www.baeldung.com/spring-properties-file-outside-jar
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.files

 

Core Features

In the absence of an Executor bean in the context, Spring Boot auto-configures an AsyncTaskExecutor. When virtual threads are enabled (using Java 21+ and spring.threads.virtual.enabled set to true) this will be a SimpleAsyncTaskExecutor that uses virtual t

docs.spring.io

 

- /data/projects/karint/karint-app.jar
jar파일 위치를 기준으로 한다.

기본적으로 properties를 읽을 수 있는 경로 
* /data/project/karint/config
* /data/project/karint/
* classpath:/config
* classpath:/

 

추가적으로 --spring.config.additional-location 옵션을 추가하여 설정 디렉토리를 추가 할 수 있다.
java -jar /data/projects/karint/karint-app.jar --spring.config.additional-location=file:///data/projects/karint/extra-conf/
- /data/projects/karint/extra-conf 경로에 properties파일을 위치시키면 기존 설정을 덮어 쓸 수 있다.

 

파일이 아니라 일부 프로퍼티만 수정을 하기 위해서는 아래 옵션을 사용해서 변경할 수 있다.
- Dspring.application.json={\"spring.datasource.url\":\"jdbc:mysql://192.168.0.1/dbname\"}

spring.datasource.url 의 속성을 위의 정의한 것처럼 변경할 수 있다. json형태이기 때문에
얼마든지 여러개의 속성을 덮어쓸 수 있다.

 

반응형