Spring Boot 설정 로드 순서 및 속성 로드 순서
4782 단어 springboot
Spring Boot 를 사용 하면 개발,테스트,온라인 등 다양한 설정 과 관련 됩 니 다.Spring Boot 는 같은 코드 를 사용 하면 개발,테스트,온라인 환경 에서 서로 다른 설정 을 사용 할 수 있 도록 쉽게 도와 줄 수 있 습 니 다.
Spring Boot 에 서 는 다음 과 같은 몇 가지 방식 으로 설정 을 불 러 올 수 있 습 니 다.이 장의 내용 은 Spring Boot 2.0 을 바탕 으로 상세 하 게 설명 한다.
1.properties 파일;
2.YAML 파일;
3.시스템 환경 변수;
4.명령 행 인자;
잠깐 만...
우 리 는 Spring Beans 에서 이 프로필 에 불 러 온 값 을 직접 사용 할 수 있 습 니 다.예 를 들 어:
1.@Value 주 해 를 사용 하여 해당 하 는 값 을 직접 주입 하면 Spring 에서 Environment 의 값 을 얻 을 수 있 습 니 다.
2.@ConfigurationProperties 주 해 를 사용 하여 해당 하 는 값 을 대상 에 연결 합 니 다.
3.주입 환경 을 직접 획득 하여 획득 하기;
속성 을 설정 하 는 방식 이 많 습 니 다.Spring boot 는 고유 한 Property Source 를 사용 하여 속성 을 쉽게 덮어 쓸 수 있 는 값 을 사용 합 니 다.
속성 불 러 오기 설정 순 서 는 다음 과 같 습 니 다.
1.개발 자 도구`Devtools`전역 설정 매개 변수;
2.단원 테스트 상의 `@TestProperty Source'가 지정 한 매개 변 수 를 주석 합 니 다.
3.단원 테스트 의 `@SpringBootTest`지정 한 매개 변 수 를 주석 합 니 다.
4.명령 행 에서 지정 한 인자,예 를 들 어'자바-jar springboot.jar--name='자바 기술 창고';
5.명령 행 의`SPRINGAPPLICATION_JSONJSON'지정 매개 변수,예 를 들 어'자바-Dspring.application.json='{'name':'자바 기술 창고'}'-jar springboot.jar'
6.`ServletConfig`매개 변 수 를 초기 화 합 니 다.
7.`ServletContext`매개 변 수 를 초기 화 합 니 다.
8.JNDI 인자(예 를 들 어`java:comp/env/spring.application.json`);
9.Java 시스템 매개 변수(출처:`System.getProperties()`);
10.운영 체제 환경 변수 파라미터;
11.`RandomValuePropertySource`의 임 의 수 는'ramdom.*'와 만 일치 합 니 다.
12.JAR 패키지 밖의 프로필 인자(`application-{profile}.properties(YAML)`)
13.JAR 가방 에 있 는 프로필 인자(`application-{profile}.properties(YAML)`)
14.JAR 패키지 밖의 프로필 인자(`application.properties(YAML)`)
15.JAR 패키지 의 설정 파일 인자(`application.properties(YAML)`)
16.`@Configuration`프로필 에 `@Property Source'로 딩 된 매개 변 수 를 설명 합 니 다.
17.기본 매개 변수('SpringApplication.setDefaultProperties'를 통 해 지정);
숫자 가 작은 우선 순위 가 높 을 수록 숫자 가 작은 것 은 숫자 가 큰 매개 변수 값 을 덮어 씁 니 다.우 리 는 실천 을 통 해 상기 설정 매개 변수의 로드 순 서 를 검증 합 니 다.
1.주 응용 프로그램 에 자바 시스템 인 자 를 추가 합 니 다.
?
1 2 3 4 5 6
@Bean
public
CommandLineRunner commandLineRunner() {
return
(args) -> {
System.setProperty(
"name"
,
"javastack-system-properties"
);
};
}
2.application.properties 파일 에 속성 을 추가 합 니 다.
?
1
name = javastack-application
3.application-dev.properties 파일 에 속성 을 추가 합 니 다.
?
1
name = javastack-application-dev
4.테스트 클래스 추가
?
1 2 3 4 5 6 7 8 9 10 11
@RunWith
(SpringRunner.
class
)
@SpringBootTest
(value = {
"name=javastack-test"
,
"sex=1"
})
@ActiveProfiles
(
"dev"
)
public
class
SpringBootBestPracticeApplicationTests {
@Value
(
"${name}"
)
private
String name;
@Test
public
void
test() {
System.out.println(
"name is "
+ name);
}
}
테스트 단위 테스트 실행,프로그램 출력:
?
1
name is javastack-test
상기 매개 변수의 동적 조정 에 따라 매개 변수 가 정확하게 덮어 쓸 수 있 음 을 발견 합 니 다.Spring Boot 의 각종 설정 의 로드 순 서 를 알 게 되 었 습 니 다.설정 이 덮어 지면 무슨 문제 인지 알 수 있 습 니 다.
다음은 springboot 속성 로드 순 서 를 보 겠 습 니 다.
우선 순 위 는 순서대로 높 은 것 에서 낮은 것 으로,숫자 가 작 을 수록 우선 순위 가 높다.
1.명령 줄 에 들 어 오 는 인자.자바-jar-Dspring.profiles.active 와 유사 합 니 다.2.SPRING_APPLICATION_JSON 속성,이 속성 은 JSON 형식 으로 시스템 환경 변수 에 저 장 됩 니 다.3.java:comp/env 의 JNDI 속성 입 니 다.4.자바 의 시스템 속성 은 System.getProperties()를 통 해 관련 내용 을 얻 을 수 있 습 니 다.5.운영 체제 의 환경 변수.6.random.*를 통 해 무 작위 속성 을 설정 합 니 다.7.현재 응용 jar 패키지 외 에{profile}환경 에 대한 설정 파일 내용 입 니 다.8.현재 응용 jar 패키지 에 있 으 며,서로 다른{profile}환경 에 대한 프로필 내용 입 니 다.9.현재 jar 패키지 밖 에 있 는 application.properties 또는 application.yml 설정 내용.10.현재 응용 jar 패키지 에 있 는 application.properties 또는 application.yml 설정 내용 입 니 다.11.@Configuration 주석 이 수 정 된 클래스 에서@PropertySource 주석 을 통 해 정 의 된 속성 을 설명 합 니 다.12.기본 속성 을 적용 하고 SpringApplication.setDefaultProperties 가 정의 하 는 속성 내용 을 사용 합 니 다.
주:자신 이 springboot 을 사용 하 는 것 을 발 견 했 을 때 사용 하 는 속성 과 자신 이 원 하 는 속성 값 이 차이 가 있 을 때 상기 로 딩 순서 에서 관련 속성 내용 을 봅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.