Spring Boot 프로필 상세 설명(소결)
기술:Yml,properties 문법,ConfigurationProperties 와 Value 주해 의 사용,설정 파일 자리 차지 문자 의 사용
설명:이 장 에 서 는 Yml 의 문법 과 ConfigurationProperties 주해 의 사용 을 중점적으로 소개 합 니 다.테스트 코드 와 전체 코드 는 github 로 이동 하 십시오.좋아 하 는 친 구 는 star 를 주문 할 수 있 습 니 다.
원본 코드:https://github.com/ITDragonBlog/daydayup/tree/master/SpringBoot/spring-boot-yml
글 디 렉 터 리 구조:
1.YAML 소개
yml 은 YAML(YAML Ain't Markup Language)언어의 파일 로,데이터 중심 으로 json,xml 등 보다 프로필 로 적합 합 니 다.
yml 은 xml 에 비해 구조 화 된 코드 가 적어 서 데 이 터 를 더욱 직접적 이 고 일목요연 하 게 한다.
yml 이랑 json 은 요?좋 은 사람 도 나 쁜 사람 도 없 으 니,적당 한 것 이 가장 좋다.yml 의 문법 은 json 보다 우아 하고 주석 이 표준적 이 며 설정 파일 로 적합 합 니 다.json 은 yml 보다 기계 교환 형식 이 강하 고 api 호출 데이터 교환 에 더욱 적합 합 니 다.
1)YAML 문법
빈 칸 의 들 여 쓰기 정도 로 등급 관 계 를 제어 하 다.빈 칸 의 개 수 는 중요 하지 않 습 니 다.왼쪽 빈 칸 이 정렬 되면 같은 등급 으로 간주 합 니 다.빈 칸 대신 tab 를 사용 할 수 없 도록 주의 하 세 요.대소 문자 가 민감 하 다.글자 액면가,대상,배열 세 가지 데이터 구 조 를 지원 하고 복합 구조 도 지원 합 니 다.
글자 값:문자열,불 형식,수치,날짜.문자열 은 기본적으로 인용 부 호 를 추가 하지 않 습 니 다.인용 부 호 는 특수 문 자 를 의미 합 니 다.날짜 형식 지원 yyy/MM/dd HH:mm:ss
대상:키 쌍 으로 구성 되 어 있 으 며,키:(빈 칸)value 와 같은 데이터 로 구성 되 어 있 습 니 다.콜론 뒤의 빈 칸 은 반드시 있어 야 합 니 다.각 그룹의 키 값 은 한 줄 을 차지 하고 들 여 쓰 는 정도 가 일치 해 야 합 니 다.줄 내 쓰기 도 사용 할 수 있 습 니 다.{k1:v1,...kn:vn}
배열:예 를 들 어-(빈 칸)value 의 데이터 로 구성 되 어 있 습 니 다.짧 은 횡선 뒤의 빈 칸 은 반드시 있어 야 합 니 다.각 그룹의 데이터 가 한 줄 을 차지 하고 들 여 쓰 는 정도 가 일치 해 야 합 니 다.줄 내 쓰기 도 사용 할 수 있 습 니 다.[1,2,...n]
복합 구조:위의 세 가지 데이터 구조 임 의 조합
2)YAML 의 활용
Spring Boot 의 전역 프로필 application.yml 을 만 들 고 속성 파 라 메 터 를 설정 합 니 다.주로 문자열,특수 문자 가 있 는 문자열,불 형식,수치,집합,줄 내 집합,줄 내 대상,집합 대상 등 자주 사용 하 는 데이터 형식 이 있 습 니 다.
yaml:
str:
specialStr: "
"
specialStr2: '
'
flag: false
num: 666
Dnum: 88.88
list:
- one
- two
- two
set: [1,2,2,3]
map: {k1: v1, k2: v2}
positions:
- name: ITDragon
salary: 15000.00
- name: ITDragonBlog
salary: 18888.88
실체 클래스 YamlEntity.java 를 만 들 고 프로필 의 속성 값 을 가 져 옵 니 다.주석@ConfigurationProperties 를 통 해 프로필 의 지정 값 을 가 져 와 실체 클래스 에 주입 합 니 다.그 구체 적 인 테스트 방법 과 획득 치 의 원 리 는 계속 뒤 를 보 세 요!
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* YAML
* :
* 、 , key:( )value
* 、 , 。
*/
@Component
@ConfigurationProperties(prefix = "yaml")
public class YamlEntity {
// , , ,
private String str; //
private String specialStr; //
private String specialStr2;//
private Boolean flag; //
private Integer num; //
private Double dNum; //
// ,List Set, : :- value, , ; :[1,2,...n]
private List<Object> list; // list
private Set<Object> set; // set
// Map , : :key value, , ; :{key: value,....}
private Map<String, Object> map; // Map K-V
private List<Position> positions; // ,
// getter,setter,toString
}
3)YML 소결1.문자열 은 따옴표 를 추가 하지 않 고 따옴표 를 추가 하면 특수 문 자 를 출력 할 수 있 습 니 다.따옴표 를 추가 하지 않 거나 추가 하지 않 으 면 특수 문 자 를 의미 합 니 다.
2.배열 유형,짧 은 횡선 뒤에 빈 칸 이 있어 야 합 니 다.대상 유형,콜론 뒤에 빈 칸 이 있어 야 합 니 다.
3.YAML 은 빈 칸 의 들 여 쓰기 정도 로 등급 관 계 를 제어 하지만 빈 칸 대신 tab 키 를 사용 할 수 없고 대소 문자 가 민감 합 니 다.
4.어떻게 프로그래머 를 붕괴 시 킵 니까?yml 파일 에 빈 칸 을 몇 개 추가 합 니 다!(〃>접시<)
2.Properties 안내
properties 파일 은 여러분 이 자주 사용 하 시 는데 여 기 는 간단하게 소개 하 겠 습 니 다.그 문법 구 조 는 키=value 와 같다.중국어 난 장 판 문제 에 주의 하 세 요.ASCII 로 번 호 를 바 꿔 야 합 니 다.구체 적 으로 다음 과 같다.
userinfo.account=itdragonBlog
userinfo.age=25
userinfo.active=true
userinfo.created-date=2018/03/31 16:54:30
userinfo.map.k1=v1
userinfo.map.k2=v2
userinfo.list=one,two,three
userinfo.position.name=Java
userinfo.position.salary=19999.99
프로필 에서 값 을 추출 하여 실체 클래스 에 주입 하 는 것 은 YAML 과 같 습 니 다.
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
*
* @ConfigurationProperties : ( prefix )
*/
@Component
@ConfigurationProperties(prefix = "userinfo")
public class UserInfo {
private String account;
private Integer age;
private Boolean active;
private Date createdDate;
private Map<String, Object> map;
private List<Object> list;
private Position position;
// getter,setter,toString
}
3.프로필 값 추출Spring Boot 는 ConfigurationProperties 주 해 를 통 해 설정 파일 에서 속성 을 가 져 옵 니 다.위의 예 에서 보 듯 이 ConfigurationProperties 주 해 는 prefix 설정 을 통 해 대량으로 가 져 올 데 이 터 를 지정 할 수 있 습 니 다.글자 액면가,집합,Map,대상 등 복잡 한 데 이 터 를 가 져 오 는 것 을 지원 합 니 다.ConfigurationProperties 주해 에 또 다른 특종 이 있 나 요?그것 과 Spring 의 Value 주 해 는 또 어떤 차이 가 있 습 니까?이 문제 들 을 가지 고 우 리 는 계속 아래 를 내 려 다 보 았 다.๑•̀ㅂ•́)و✧
1)ConfigurationProperties 와 Value 의 장단 점
ConfigurationProperties 주해 의 장단 점
1.설정 파일 에서 속성 을 대량으로 주입 할 수 있 습 니 다.
2.복잡 한 데이터 형식 가 져 오 는 것 을 지원 합 니 다.
3.속성 명 에 대한 요구 가 비교적 낮 습 니 다.예 를 들 어 user-name,username,userName,USER_NAME 에서 값 을 얻 을 수 있 습 니 다.
4.JAVA 의 JSR 303 데이터 검증 을 지원 합 니 다.
5.강력 한 SpEL 표현 식 을 지원 하지 않 는 것 이 단점 입 니 다.
Value 주해 의 장단 점 은 정반 대 입 니 다.주입 값 만 설정 할 수 있 습 니 다.배열,집합 등 복잡 한 데이터 형식 은 지원 되 지 않 습 니 다.데이터 검증 이 지원 되 지 않 습 니 다.속성 명 일치 에 대해 엄격 한 요구 가 있 습 니 다.가장 큰 특징 은 SpEL 표현 식 을 지원 하여 더욱 풍부 한 기능 을 가지 게 하 는 것 이다.
2)@ConfigurationProperties 상세 설명
첫 번 째 단계:가 져 오기 의존.ConfigurationProperties 주 해 를 사용 하려 면 spring-boot-configuration-processor 를 가 져 와 야 합 니 다.
두 번 째 단계:데이터 설정.application.yml 설정 파일 에서 속성 파 라 메 터 를 설정 합 니 다.접 두 사 는 itdragon 입 니 다.파 라 메 터 는 글자 액면가 와 배열 이 있 습 니 다.복잡 한 속성 을 가 져 오 는 능력 을 지원 하 는 지 판단 합 니 다.
세 번 째 단계:일치 하 는 데이터.클래스 에 ConfigurationProperties 를 추가 하고 prefix 속성 값 을 itdragon 으로 설정 합 니 다.이 종 류 를 Spring 의 IOC 용기 에 추가 합 니 다.
네 번 째 단계:데 이 터 를 검증 합 니 다.데이터 검증 Validated 주 해 를 추가 하고 데이터 검증 을 열 어 데이터 검증 기능 을 지원 하 는 지 테스트 합 니 다.
다섯 번 째 단계:ConfigurationProperties 주석 이 SpEL 표현 식 을 지원 하 는 지 테스트 합 니 다.
가 져 오기 의존:pom.xml 에 spring-boot-configuration-processor 의존 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
설정 데이터:application.yml 설정 속성 파라미터,nick-name 은 일치 하 는 속성의 느슨 함 을 판단 하 는 데 사 용 됩 니 다.nick 로 바 뀌 면name 은 여전히 값 을 가 져 올 수 있 습 니 다.
itdragon:
nick-name: ITDragonBlog
email: [email protected]
iphone: 1234567890
abilities: [java, sql, html]
created_date: 2018/03/31 15:27:30
일치 및 검사 데이터:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Email;
import java.util.Date;
import java.util.List;
/**
* ConfigurationProperties
* : spring-boot-configuration-processor;
* : ConfigurationProperties Spring IOC ;
* : prefix , ;
* : , ;
*
* :
* 、nickName createdDate yml , ,
* 、email iphone JSR303
* 、abilities
*/
@Component
@ConfigurationProperties(prefix = "itdragon")
@Validated
public class ConfigurationPropertiesEntity {
private String nickName; // ,
private String email;
// @Email // , :BindValidationException: Binding validation errors on itdragon
private String iphone;
private List<String> abilities;
private Date createdDate; // ,
// @ConfigurationProperties("#{(1+2-3)/4*5}")
private String operator; // , SpEL :not applicable to field
// getter,setter,toString
}
3)@Value 상세 설명지난 블 로그 에 서 는 밸 류 주해 의 사용 을 소 개 했 는데,여기 에는 간단 한 설명 만 있다.
첫 번 째 단계:속성 에 Value 주 해 를 추가 하고${}설정 파 라 메 터 를 통 해 설정 파일 에 값 을 주입 합 니 다.
두 번 째 단계:${itdragon.cetred 수정date}의 매개 변수 값 을${itdragon.cetredDate}로 변경 하여 분석 에 성공 할 수 있 는 지 테스트 합 니 다.
세 번 째 단계:데이터 검증 Validated 주 해 를 추가 하고 데이터 검증 을 열 어 데이터 검증 기능 을 지원 하 는 지 테스트 합 니 다.
네 번 째 단계:Value 주석 이 SpEL 표현 식 을 지원 하 는 지 테스트 합 니 다.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Email;
import java.util.Date;
import java.util.List;
/**
* Value
* : Value
* : Value Spring IOC ;
* : , ;
*
* :
* 、nickName createdDate yml , ,
* 、email iphone JSR303
* 、abilities
*
* :
* 、createDate yml ,
* 、 iphone ,
* 、 , :IllegalArgumentException: Could not resolve placeholder 'itdragon.abilities' in value "${itdragon.abilities}"
*/
@Component
@Validated
public class ValueEntity {
@Value("${itdragon.nick-name}")
private String nickName;
@Value("${itdragon.email}")
private String email;
@Email
@Value("${itdragon.iphone}") // ,
private String iphone;
// @Value("${itdragon.abilities}") // ,
private List<String> abilities;
// @Value("${itdragon.ceatredDate}") // , ,
private Date createdDate;
// Value : SpEL
@Value("#{(1+2-3)/4*5}") //
private String operator;
@Value("#{1>2 || 2 <= 3}") //
private Boolean comparison;
@Value("#{systemProperties['java.version']}") // :os.name
private String systemProperties;
@Value("#{T(java.lang.Math).abs(-18)}") //
private String mapExpression;
// getter,setter,toString
}
4)설정 파일 값 추출 소결1.ConfigurationProperties 주 해 는 대량 주입 을 지원 하고 Value 주 해 는 단일 주입 에 적합 합 니 다.
2.ConfigurationProperties 주 해 는 데이터 검증 을 지원 하지만 Value 주 해 는 지원 되 지 않 습 니 다.
3.ConfigurationProperties 주 해 는 느슨 한 일치 속성 을 지원 하고 Value 주 해 는 속성 과 엄 격 히 일치 해 야 합 니 다.
4.ConfigurationProperties 는 강력 한 SpEL 표현 식 을 지원 하지 않 고 Value 는 지원 합 니 다.
4.설정 파일 자리 차지 문자
자리 표시 자 와 난수 가 비교적 간단 하 므 로 여기에 코드 를 직접 붙 입 니 다.주의해 야 할 것 은:
1.자리 차지 문자 의 값 은 전체 경로 여야 합 니 다.
2.자리 표시 자 는 기본 값 을 설정 합 니 다.콜론 뒤에 빈 칸 이 있 으 면 안 됩 니 다.
ran: # prefix random,
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: placeholder_${ran.ran-value: , key }
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
*
*/
@Component
@ConfigurationProperties(prefix = "ran")
public class RandomEntity {
private String ranValue; //
private Integer ranInt; //
private Long ranLong; //
private Integer ranIntNum; //
private Integer ranIntRange;//
private String ranPlaceholder;//
// getter,setter,toString e
}
:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootYmlApplicationTests {
@Autowired
private UserInfo userInfo;
@Autowired
private YamlEntity yamlEntity;
@Autowired
private ConfigurationPropertiesEntity configurationPropertiesEntity;
@Autowired
private ValueEntity valueEntity;
@Autowired
private RandomEntity randomEntity;
@Test
public void contextLoads() {
// System.out.println("YAML Grammar : " + yamlEntity);
// System.out.println("UserInfo : " + userInfo);
// System.out.println("ConfigurationProperties Grammar : " + configurationPropertiesEntity);
// System.out.println("Value Grammar : " + valueEntity);
System.out.println("Random Grammar : " + randomEntity);
}
}
총화1.Spring Boot 는 두 가지 형식의 프로필 을 지원 하 는데 그 중에서 YAML 의 데이터 구 조 는 properties 보다 더욱 뚜렷 합 니 다.
2.YAML 은 프로필 을 작성 하 는 언어 로 매우 간결 하고 강력 합 니 다.
3.YAML 은 빈 칸 에 대한 요구 가 엄격 하고 Tab 키 로 대체 할 수 없습니다.
4.YAML 은 빈 칸 의 들 여 쓰기 정 도 를 통 해 등급 을 정 하고 사칭 뒤에 빈 칸 이 있 으 며 짧 은 횡선 뒤에 빈 칸 이 있 습 니 다.
5.ConfigurationProperties 주 해 는 설정 파일 의 속성 을 대량으로 주입 하 는 데 적합 합 니 다.Value 주 해 는 설정 파일 의 한 항목 을 가 져 오 는 데 적합 합 니 다.
6.ConfigurationProperties 주 해 는 데이터 검증 과 복잡 한 데 이 터 를 지원 하고 Value 주 해 는 SpEL 표현 식 을 지원 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.