외부 설정 파일
Application
에서 사용하는 여러가지 설정값들을 Application
의 밖 또는 안에다가 정의할 수 있는 파일
사용할 수 있는 외부 설정
.properties
YAML
- 환경 변수
Command Line Arguments
Properties
application.properties
: 스프링 부트가 Application
을 구동할때 자동으로 로딩하는 파일
// application.properties
jinseo.name=jinseo
@Component
@Order(1)
public class SampleRunner implements ApplicationRunner {
@Value("${jinseo.name}")
private String name;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("===================");
System.out.println(name);
System.out.println("===================");
}
}
Environment
@Autowired
Environment environment;
// getProperty("key") 를 이용해 설정값을 가져올 수 있다.
String name = environment.getProperty("jinseo.name");
테스트에서 외부설정 사용하기
테스트 실행 시 src/main -> src/test
순으로 빌드
즉, test 파일
이 main 파일
을 오버라이딩 한다. (명칭이 동일한 파일)
1. @SpringBootTest
properties
속성 사용
@RunWith(SpringRunner.class)
@SpringBootTest(properties="jsk.name=jinseokim")
public class ApplicationTests {
...
}
2. @TestPropertySource
사용
@RunWith(SpringRunner.class)
@TestPropertySource(properties="jsk.name=jinseokim")
@SpringBootTest
public class ApplicationTests {
...
}
혹은 test/resource/test.properties
파일을 생성하여 해당 경로를 지정하는 방법
@RunWith(SpringRunner.class)
@TestPropertySource(locations="classpath:/test.properties")
@SpringBootTest
public class ApplicationTests {
...
}
* VSCode Test Properties 설정
// Project 내 setting.json
"java.test.config": {"sourcePaths": ["classpath:/application.properties"]}
우선순위
높은 순위의 방법이 낮은 순위의 방법을 오버라이딩 한다.
Property 우선순위
1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
2. 테스트에 있는 @TestPropertySource
3. @SpringBootTest
애노테이션의 properties
애트리뷰트
4. Command Line Arguments
5. SPRING_APPLICATION_JSON
(환경 변수 또는 시스템 프로퍼티)에 들어있는 프로퍼티
6. ServletConfig
파라미터
7. ServletContext
파라미터
8. java:comp/env JNDI
애트리뷰트
9. System.getProperties()
자바 시스템 프로퍼티
10. OS 환경 변수
11. RandomValuePropertySource
12. JAR 밖에 있는 특정 프로파일용 application.properties
13. JAR 안에 있는 특정 프로파일용 application.properties
14. JAR 밖에 있는 application.properties
15. JAR 안에 있는 application.properties
16. @PropertySource
17. 기본 프로퍼티(SpringApplication.setDefaultProperties
)
Property 파일 우선순위
resources/
디렉토리 이외에도 application.properties
가 위치할 수 있다.
위치에 따른 우선순위는 다음과 같다.
1. file:./config/
: 현재 파일시스템(root) 밑 config
디렉토리 내
2. file:./
: 현재 파일시스템(root) 밑
3. classpath:/config/
4. classpath:/
랜덤 값, 플레이스 홀더
// application.properties
// Random Number
random.value=${random.int}
// Placeholder
jinseo.firstname=Jinseo
jinseo.lastname=Kim
jinseo.fullname=${jinseo.firstname} ${jinseo.lastname}
참고
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config
'Dev > Spring Boot' 카테고리의 다른 글
[스프링 부트 개념과 활용] 프로파일 (0) | 2020.08.24 |
---|---|
[스프링 부트 개념과 활용] 외부 설정 2부 (0) | 2020.08.24 |
[스프링 부트 개념과 활용] SpringApplication 2부 (0) | 2020.08.20 |
[스프링 부트 개념과 활용] SpringApplication 1부 (0) | 2020.08.20 |
[스프링 부트 개념과 활용] 스프링 부트 활용 소개 (0) | 2020.08.20 |
댓글