Spring Boot는 일반적으로 사용되는 두 개의 구성 파일, 즉 속성 파일 및 YML 파일을 제공합니다. 그들의 기능은 Spring Boot 자동 구성의 기본값을 수정하는 것입니다. 속성 파일과 비교하여 YML 파일은 더 젊고 많은 함정이 있습니다. Xiao는 그가 성공하고 Xiao를 실패한다고 말할 수 있습니다. YML은 구성 파일 구조이며 명확한 공간을 통한 계층 관계를 결정하지만 중요하지 않은 공간으로 인해 계층 관계를 파괴합니다. 이 장에서는 YML의 구문과 구성 파일에서 값을 가져 오는 데 중점을 둡니다. 당신은 무엇을 기다리고 있습니까? 와서 빨리 공부하십시오!
기술 : Yaml, Properties Syntax, ConfigurationProperties 및 값 주석 사용, 구성 파일 자리 표시 자의 사용
참고 :이 장에서는 YAML의 구문 및 ConfigurationProperties 주석 사용에 중점을 둡니다. 코드를 테스트하고 코드를 완료하려면 Github로 이동하십시오. 좋아하는 친구는 별을 클릭 할 수 있습니다.
소스 코드 : https://github.com/itdragonblog/daydayup/tree/master/springboot/springboot-yml
기사 디렉토리 구조 :
1. Yaml 소개
YML은 Yaml (Yaml Ai n't Markup Language)의 파일로, 데이터 중심이며 JSON, XML 등보다 구성 파일에 더 적합합니다.
XML과 비교할 때 YML은 구조화 된 코드가 적으므로 데이터가 더 직접적이고 명확하게 나타납니다.
YML과 JSON은 어떻습니까? 아무도 좋지 않거나 나쁘지 않습니다. 올바른 것이 최고입니다. YML의 구문은 JSON보다 우아하며 표준 주석이 높으며 구성 파일에 적합합니다. 기계 교환 형식으로 JSON은 YML보다 강력하며 API 호출에 대한 데이터 교환에 더 적합합니다.
1) Yaml 구문
공간의 압입 정도에 의한 계층 적 관계를 통제합니다. 왼쪽의 공간이 정렬되는 한 공간의 수는 중요하지 않습니다. 탭은 공간 대신 탭을 사용할 수 없습니다. 그리고 사례 민감성. 문자 값, 객체 및 배열의 세 가지 데이터 구조를 지원하고 복합 구조도 지원합니다.
리터럴 값 : 문자열, 부울 유형, 숫자 값, 날짜. 문자열은 기본적으로 인용되지 않으며 단일 따옴표는 특수 문자를 피할 수 있습니다. 날짜 형식은 yyyy/mm/dd hh : mm : ss를 지원합니다
개체 : 키 값 쌍, 키 형태의 데이터 : (공간) 값으로 구성됩니다. 결장 이후의 공간이 필요합니다. 각 키 가치 쌍의 각 세트는 한 줄을 차지하며 압입 정도는 일관성이 있어야합니다. 인라인 쓰기 방법을 사용할 수도 있습니다 : {k1 : v1, .... kn : vn}
배열 : (공간) 값 형태의 데이터로 구성됩니다. 짧은 수평선 뒤의 공간이 필요합니다. 각 데이터 세트는 한 줄을 차지하며 들여 쓰기 정도는 일관성이 있어야합니다. 인라인 쓰기 방법을 사용할 수도 있습니다 : [1,2, ... n]
복합 구조 : 위의 세 가지 데이터 구조의 조합
ii) Yaml의 적용
스프링 부팅 글로벌 구성 파일 application.yml을 생성하고 속성 매개 변수를 구성하십시오. 주로 문자열, 특수 문자가있는 문자열, 부울 유형, 값, 컬렉션, 인라인 컬렉션, 인라인 객체 및 수집 객체가 있습니다.
YAML : String은 따옴표가 없을 수 있습니다. Specialstr : "이중 인용문 직접 출력 /n 특수 문자"특수 문자 "SpecialSt2 : '단일 따옴표는 피해자 /n 특수 문자'플래그 : false num : 666 dnum : 88.88 목록 : - 하나 -2- 세트 : [1,2,2,3]지도 : {k1 : v1, k2 : v2} 위치 : - Itdragon Slary : 15000.00. ItdragonBlog 급여 : 18888.88엔티티 클래스 생성 yamlentity.java 구성 파일에서 속성 값을 얻고 @configurationProperties에 주석을 달고 엔티티 클래스에 주입하여 구성 파일에서 지정된 값을 가져옵니다. 특정 테스트 방법과 가치를 얻는 원리를 계속 살펴보십시오!
import org.springframework.boot.context.properties.configurationProperties; import org.springframework.stereotyp.component; import java.util.list; import java.util.list; import java.util.map; import java.util.set;/*** yaml syntax entity class* 1. * 2. 각 라인 매개 변수의 왼쪽에있는 공백 수는 매개 변수의 레벨을 결정하고 무작위로 입력하지 않습니다. */@component@configurationProperties (prefix = "yaml") public class yamlentity {// 문자 값, 문자열, 부울, 수치 개인 문자열 str; // 일반 문자열 프라이버시 문자열 SpecialSt; // 스페셜 문자열 탈출 개인 문자열 specialstr2; // 출력 특수 문자열 비공개 부울 플래그; // 부울 유형 개인 정수 NUM; // 정수 개인 Double Dnum; // decimal // 배열, 목록 및 세트, 쓰기하는 두 가지 방법 : - 첫 번째 값, 각 값은 하나의 행을 차지하며 들여 쓰기 및 정렬해야합니다. 두 번째 : [1,2, ... N] 인라인 쓰기 개인 목록 <bood> 목록; // 목록 반복 가능한 세트 개인 세트 <bood> set; // 세트를 반복 할 수 없습니다. // 맵 및 엔티티 클래스, 쓰기하는 두 가지 방법 : 첫 번째 : 키 공간 값, 각 값은 한 줄을 차지하며 들여 쓰기 및 정렬해야합니다. 두 번째 : {key : value, ....} 인라인 쓰기 개인지도 <문자열, 개체>지도; // map kv private list <position> 위치; // 화합물 구조, 수집 객체 // getter, setter, tostring 방법을 생략합니다}3) YML 요약
1. 문자열은 인용문이 없을 수 있습니다. 이중 인용문이 추가되면 특수 문자가 출력됩니다. 단일 따옴표가 추가되지 않으면 특수 문자가 탈출됩니다.
2. 배열 유형의 경우 짧은 수평선 뒤에 공백이 있어야합니다. 객체 유형의 경우 콜론 뒤에 공간이 있어야합니다.
3. YAML은 공간 압입 정도에 따라 계층 적 관계를 제어하지만 탭 키는 공간 대신 사용할 수 없으며, 대소 문자는 민감합니다.
4. 프로그래머 충돌 방법은 무엇입니까? YML 파일에 몇 개의 공백을 추가하십시오! (〃> 요리 <)
2. 속성 소개
모든 사람은 종종 속성 파일을 사용하므로 여기에 간단히 소개합니다. 구문 구조는 다음과 같습니다. key = value. 중국어가 달린 코드의 문제에주의를 기울이고 ASCII로 변환해야합니다. 세부 사항은 다음과 같습니다.
userInfo.account = itdragonbloguserinfo.age = 25userinfo.active = trueuserinfo.created-date = 2018/03/31 16 : 54 : 30userinfo.map.k1 = v1userinfo.map.k2 = v2userinfo.list = one, tre, thinuerinfo.name = java userinfo.position.salary = 19999.99
구성 파일에서 값을 가져 와서 yaml과 동일한 엔티티 클래스에 주입하십시오.
import org.springframework.boot.context.properties.configurationProperties; import org.springframework.stereotyp.component; import java.util.date; import java.util.list; import java.util.map;/*** 사용자 정보* @configurationProperties : 모든 특성에 대한 모든 성적에 대한 모든 성적이 적합합니다. configuration 파일 (값은 prefix를 통해 찾을 수 있음)*/@compigont@configurationProperties (prefix = "userInfo") public class userInfo {private string 계정; 개인 정수 시대; 개인 부울 활동; 개인 날짜가 생성되었습니다. 개인지도 <문자열, 객체>지도; 비공개 목록 <bood> 목록; 개인 위치 위치; // getter, setter, tostring methods} 생략3. 구성 파일 값
Spring Boot는 ConfigurationProperties 주석을 통해 구성 파일에서 속성을 가져옵니다. 위의 예에서 ConfigurationProperties 주석이 접두사를 설정하여 배치로 가져와야하는 데이터를 지정할 수 있음을 알 수 있습니다. Literals, 컬렉션,지도, 개체 등과 같은 복잡한 데이터를 얻는 지원 ConfigurationProperties 주석에 대한 다른 것이 있습니까? 그것과 Spring의 가치 주석의 차이점은 무엇입니까? 이러한 질문을 염두에두고 계속 내려다 보겠습니다. (́ • ̀ㅂ • ́) و✧
a) configurationProperties 및 가치의 장단점
ConfigurationProperties 주석의 장단점
1. 구성 파일에서 속성을 주입 할 수 있습니다.
2. 복잡한 데이터 유형을 얻는 지원;
3. 일치하는 속성 이름에 대한 요구 사항은 사용자 이름, User_Name, 사용자 이름 및 User_Name과 같은 낮습니다.
4. JSR303 지원 Java의 데이터 검증;
5. 단점은 강력한 Spel 표현을 지원하지 않는다는 것입니다.
가치 주석의 장점과 단점은 그 반대입니다. 주입 값 만 하나씩 구성 할 수 있습니다. 배열 및 컬렉션과 같은 복잡한 데이터 유형을 지원하지 않습니다. 데이터 검증을 지원하지 않습니다. 속성 이름 일치에 대한 엄격한 요구 사항이 있습니다. 가장 큰 특징은 SPEL 표현식을 지원하여 더 풍부한 기능을한다는 것입니다.
2) @ConfigurationProperties 자세한 설명
1 단계 : 수입 종속성. configurationProperties 주석을 사용하려면 종속성 스프링 부츠-구성 프로세서를 가져와야합니다.
2 단계 : 데이터 구성. Application.yml 구성 파일에서 Itdragon에 의해 접두사가있는 속성 매개 변수를 구성하고 매개 변수에는 문자 그대로 값과 배열이 있으며 복잡한 속성을 얻는 능력이 지원되는지 여부를 결정하는 데 사용됩니다.
3 단계 : 데이터와 일치합니다. 클래스에 주석 configurationProperties를 추가하고 접두사 속성 값을 Itdragon으로 설정하십시오. 이 클래스를 Spring의 IOC 컨테이너에 추가하십시오.
4 단계 : 데이터 확인. 데이터 검증 검증 된 주석을 추가하고 데이터 확인을 활성화하며 데이터 검증을 지원하는지 테스트합니다.
5 단계 : configurationProperties 주석이 SPEL 표현식을 지원하는지 여부를 테스트합니다.
가져 오기 종속성 : POM.XML 스프링 보트-기업 프로세서 종속성 추가
<pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링 버전-컨퍼런스-프로세서 </artifactid> <selection> true </옵션> </dependency>
구성 데이터 : application.yml 구성 속성 매개 변수, 별명은 일치하는 속성의 느슨 함을 판단하는 데 사용됩니다. Nick_Name으로 변경되면 여전히 값을 얻을 수 있습니다.
Itdragon : Nick-Name : ItdragonBlog 이메일 : [email protected] iPhone : 1234567890 능력 : [Java, SQL, HTML] create_date : 2018/03/31 15:27:30
데이터 일치 및 확인 :
import org.springframework.boot.context.properties.configurationProperties; import org.springframework.stereotyp.component; import org.springframework.validation.annotation.validated; import javav.validation.canstorstraints.email; java.date; java. * configurationProperties 주석 구문 클래스 * 1 단계 : 수입 종속성 스프링 보트-구성 프로세서; * 2 단계 : ConfigurationProperties 주석으로 수정 된 클래스를 Spring의 IOC 컨테이너에 추가합니다. * 3 단계 : 접두사 속성을 설정하고 주입 해야하는 접두사를 지정합니다. * 4 단계 : 데이터 확인 주석을 추가하여 데이터 확인을 활성화합니다. * 1. 닉네임과 생성 된 데이트는 YML 구성 파일에 있으며, 해당 매개 변수는 각각 일치하는 속성 이름의 느슨함을 테스트하는 데 사용됩니다. "itdragon")@validatedpublic class configurationProperTiesEntity {private String 닉네임; // 성공적으로 구문 분석, 느슨한 일치 속성 지원 개인 문자열 이메일; // @email // 구문 분석 실패 및 데이터 확인이 성공적이었습니다. BindValidationException : Itdragon Private String iPhie의 바인딩 유효성 검사 오류; 개인 목록 <문자열> 능력; 개인 날짜가 생성되었습니다. // 성공적으로 구문 분석, 느슨한 일치 속성을 지원 // @ConfigurationProperties ( "#{(1+2-3)/4*5}") 개인 문자열 연산자; // 구문 오류, SPEL 표현을 지원하지 않음 : 필드에 적용 할 수 없음 // Getter, Setter, Tostring Methods}3) @Value 자세한 설명
이전 블로그는 가치 주석의 사용을 소개했으며 여기에 간단한 설명이 있습니다.
1 단계 : 값 주석을 속성에 추가하고 구성 파일에서 $ {} 설정 매개 변수를 통해 값을 주입합니다.
2 단계 : $ {itdragon.ceatred_date}의 매개 변수 값을 수정하고 $ {itdragon.ceatredDate}로 변경하여 구문 분석이 성공할 수 있는지 테스트합니다.
3 단계 : 데이터 검증 검증 된 주석을 추가하고 데이터 검증을 활성화하며 데이터 검증을 지원하는지 여부를 테스트합니다.
4 단계 : 값 주석이 SPEL 표현을 지원하는지 여부를 테스트합니다.
import org.springframework.bean.beans.annotation.value; import org.springframework.stereotyp.component; import org.springframework.validation.annotation.validated; import javax.validation.constraints.email; import java.util.date; java.util.util./* value annot; 구문 클래스* 1 단계 : 속성에 주석 값 주입 매개 변수 추가* 2 단계 : 스프링 IOC 컨테이너에 값 주석으로 수정 된 클래스를 추가합니다. * 3 단계 : 데이터 검증이 지원되는지 확인하기 위해 데이터 확인 주석을 추가하십시오. * * 1. 닉네임 및 생성 된 DATE YML 구성 파일에서 해당 매개 변수는 각각 일치하는 속성 이름의 느슨함을 테스트하는 데 사용됩니다. * 2. JSR303 데이터 검증을 지원하는 이메일 및 iPhone 테스트 * 3. 파일. * 2. iPhone에 사서함 확인 주석을 추가하기 때문에 여전히 테스트를 통과 할 수 있습니다. * 3. 복잡한 데이터 구조는 지원되지 않으며 프롬프트 오류는 첫 번째 오류와 동일합니다. 불법 오류 : 불법 오류 : 자리 표시 자 'itdragon.abilities'value "$ {itdragon.abilities}" */@component@validatedpublic class valuation {@Value ( "$ {itdragon.nick-name}"))를 해결할 수 없습니다. @Value ( "$ {itdragon.email}") 개인 문자열 이메일; @Email @Value ( "$ {itdragon.iphone}") // 구문 분석이 성공적이며 데이터 검증은 비공개 문자열 iPhone; // @Value ( "$ {itdragon.eatredDate}") // 구문 분석은 오류이며, 복잡한 데이터 구조는 개인 목록 <string> abilities; // @value ( "$ {itdragon.. 구문 분석 오류는 느슨한 일치 속성을 지원하지 않으며, 생성 된 개인 날짜를 엄격히 일관되게해야합니다. // 값 주석의 강력한 측면 : SPEL 표현식 @Value ( "#{(1+2-3)/4*5}") // 산술 작업 개인 문자열 연산자; @Value ( "#{{1> 2 || 2 <= 3}") // 관계형 작업 개인 부울 비교; @Value ( "#{SystemProperties [ 'java.version']}") // 시스템 구성 : OS.Name Private String SystemProperties; @Value ( "#{t (java.lang.math) .abs (-18)}") // 표현 개인 문자열 mapexpression; // getter, setter, tostring methods} 생략4) 구성 파일 값 요약
1. 구성 분리 주석 주석은 배치 주입을 지원하는 반면, 값 주석은 단일 주입에 적합합니다.
2. ConfigurationProperties 주석은 데이터 검증을 지원하는 반면 값 주석은 그렇지 않습니다.
3. configurationProperties 주석은 느슨한 일치 속성을 지원하는 반면, 값 주석은 속성을 엄격히 일치시켜야합니다.
4. ConfigurationProperties는 강력한 SPEL 표현을 지원하지 않지만 값은이를 지원합니다.
4. 구성 파일 자리 표시 자
자리 표시 자와 임의의 숫자는 비교적 간단하므로 여기에 직접 코드를 게시하겠습니다. 주목해야 할 것은 다음과 같습니다.
1. 자리 표시 자의 가치는 전체 경로 여야합니다.
2. 자리 표시 자의 기본값을 설정하면 결장 이후 공간이 없어야합니다.
RAN : # 여기의 접두사는 랜덤, ran value : $ {random.value} ran-int : $ {random.int} ran-long : $ {random.long} ran-int-num : $ {random.int (10)} ran-int-range : $ random.int [10,20]} ran-placeholder : 자리 표시 자 _ $ {ran.ran value : 여기에는 공간이없고 열쇠는 전체 경로입니다} import org.springframework.boot.context.properties.configurationProperties; import org.springframework.stereotyp.component;/*** 랜덤 번호 및 자리 표시 자 구문 클래스*/@compigurationproperties (prefix = "Ran") public class randglentity {private rendittity {private string ranvalue; // 문자열을 무작위로 생성 개인 정수 Ranint; // 정수 개인 Long Ranlong을 무작위로 생성합니다. // 긴 정수 개인 정수 Ranintnum을 무작위로 생성합니다. // 지정된 범위 내 정수 RanIntrange에서 정수 개인을 무작위로 생성합니다. // 정수 개인 문자열 Ranplaceholder; // placeholder // levit getter, setter, tostring method e} 테스트 코드 : @runwith (springrunner.class) @springboottestpubotomlapplicationts ~ @runwith (springrunner.class) @runwith (springrunner.class) @runwith userinfo; @autowired Private Yamlentity Yamlentity; @autowired private configurationPropertiesEntity configurationProperTiesEntity; @autowired 개인 가치 가치 가치; @autowired Private Randomentity Randomentity; @test public void contextloads () {// system.out.println ( "Yaml Grammar :" + Yamlentity); // system.out.out.println ( "userInfo :" + userInfo); // system.out.println ( "configurationProperties Grammar : // systrintringpropertisentity); 문법 : " + 가치); System.out.println ( "랜덤 문법 :" + randomentity); }}5. 요약
1. Spring Boot는 두 가지 형식의 구성 파일을 지원하며, 그 중 YAML의 데이터 구조는 속성보다 명확합니다.
2. Yaml은 구성 파일을 작성하는 데 특별히 사용되는 언어로 매우 간결하고 강력합니다.
3. Yaml은 공간에 엄격한 요구 사항이 있으며 탭 키로 대체 할 수 없습니다.
4. YAML은 공간 압입 정도에 따라 레벨을 결정하며, 공백을 따르는 공간과 짧은 수평선을 따라 공간을 따릅니다.
5. configurationProperties 주석은 구성 파일에서 속성의 배치 주입에 적합하며 값 주석은 구성 파일에서 항목을 얻는 데 적합합니다.
6. ConfigurationProperties 주석은 데이터 체크섬을 지원하여 복잡한 데이터를 얻고 가치 주석이 SPEL 표현식을 지원합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.