반응형
spring boot는 application.properties 파일을 통해 설정을 할 수 있습니다.
properties의 값은 @Value annocation을 통해 읽어올 수 있습니다.
# application.properties
noroo.test=test
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class Test implements ApplicationRunner {
@Value("${noroo.test}")
private String test ;
@Override
public void run(ApplicationArguments args) {
System.out.println("=======");
System.out.println(test);
System.out.println("=======");
}
}
Spring boot의 SpringApplication은 아래와 같은 우선순위로 application.properties를 읽는데, 그 우선순위는 다음과 같습니다.(밑으로 갈수록 우선순위가 낮아집니다.)
- spring-boot-devtools를 활성화 시켰을 때 $HOME/.config/spring-boot 디렉토리 안에서 제공하는 프로퍼티
- 테스트에 사용한 @TestPropertySource가 제공하는 프로퍼티
- @SpringBootTest 또는 슬라이스 테스트용 애노테이션의 properties 속성으로 제공하는 프로퍼티
- 커맨드 라인 argument
- SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
- ServletConfig 초기 매개변수
- ServletContext 초기 매개변수
- java:comp/env에 들어있는 JNDI 애트리뷰트
- 자바 시스템 프로퍼티(System.getProperties())
- OS 환경 변수
- RandomValuePropertySource
- JAR 밖에 있는 특정 프로파일용 application properties (application-{profile}.properties 또는 YAML)
- JAR 안에 있는 특정 프로파일용 application properties (application-{profile}.properties 또는 YAML)
- JAR 밖에 있는 application properties (application.properties 또는 YAML)
- JAR 안에 있는 application properties (application.properties 또는 YAML)
- @Configuration 클래스에 사용한 @PropertySource로 읽은 프로퍼티
- 기본 프로퍼티 (SpringApplication.setDefaultProperties)
start.spring.io 또는 intellij에서 spring boot 어플리케이션을 만들면 기본적으로 application.properties 파일이 src/main/resources에 생성되는데 그 파일이 바로 15순위에 해당합니다.
또한 spring boot에서는 application.properties의 위치에 따라서 설정값의 우선순위가 결정됩니다.
그 우선순위는 다음과 같습니다.
- file: ./config/(프로젝트 root 디렉토리의 /config 디렉토리)
- file: ./(프로젝트 root 디렉토리)
- classpath: /config/ (classpath(java jar 실행 위치)의 config 디렉토리)
- classpath: /(클래스패스 디렉토리)
만약 정해진 위치 이외의 properties 파일을 사용하고 싶다면 아래와 같이 경로를 지정할 수 있습니다.
java -jar -Dspring.config.location=<path-to-file> myBootProject.jar
[참고]
stackoverflow.com/questions/41754459/spring-boot-how-to-read-properties-file-outside-jar
728x90
반응형
'웹 개발' 카테고리의 다른 글
java에서 메모리 문제가 발생할 경우 사용해볼 수 있는 메모리 옵션 (0) | 2020.11.29 |
---|---|
[netty] too many open files (0) | 2020.11.22 |
spring boot에서 mybatis ${} 사용시 sql injection 방어하기 (0) | 2020.11.21 |
NPE(Null Pointer Exception)으로부터 안전한 프로그래밍 하기 (1) | 2020.11.08 |
Spring lazy Initialization (0) | 2020.10.13 |