spring-boot의 읽기 프로필
어떤 프로젝트든 프로필이 적을 수 없기 때문에 프로필은spring-boot에서 많이 나타난다. 본 편은 가장 자주 사용하는 프로필의 방식을 소개한다. 코드는 첫 번째 개발된 간단한 Hello World의 마이크로 서비스에 의존하고 프로젝트 코드도 첫 번째 코드와 같은 프로젝트에 있다.
일반 구성
key-value @Value
프로필 응용 프로그램을 가정합니다.yaml 내용
key1: value1
key2: ${value2:default_value2}
그리고 코드에 사용했어요.
@Value("${key1}")
private String key1;
@Value("${key2}")
private String key2;
@Value("${key3:default_value3}")
private String key3;
프로필에 있는 키1에 대해 대응하는 값은value1입니다. @Value ("${key1}") 를 사용할 때 대응하는 값을 찾지 못하면 프로그램이 비정상적으로 종료됩니다.
설정 파일의 키 2 표시에 대응하는 값은defaultvalue2, 그러나 자바 시작 매개 변수 - Dvalue2를 수동으로 설정해서 기본값을 바꿀 수 있습니다.
@Value ("${key3:default value3}") 는 프로필에 있는 키3을 찾으려고 합니다. 찾으면 프로필에 있는 값을 사용하고, 찾지 못하면 이상을 던지지 않고default 을 사용합니다.value3 대체.
프로필을 대상으로 바꾸려면 먼저 프로필 클래스에 주석을 사용하십시오
@Configuration
@EnableConfigurationProperties({
CollectionConfig.class, QiNiuConfig.class
})
그 중에서 주석 @Configuration은 이 클래스를 설정 클래스로 표시하고 설정 파일을 읽어야 하며 @Enable Configuration Properties는 설정 파일을 Collection Config와QiNiu Config 클래스의 대상으로 비추어야 한다는 것을 의미하며 자바의 대상을 향한 사상에 부합된다.
(1) 객체 유형: 다음은 QiNiuConfig 클래스
@Validated
@ConfigurationProperties(prefix = "qiniuParam")
public class QiNiuConfig {
@NotNull
private String accessKey;
@NotNull
private String secretKey;
private String localImageFilePath;
private int otherParam1;
@NotNull
private int otherParam2;
// @NotNull
private Integer otherParam3;
}
해당 프로파일
qiniuParam:
accessKey: testAccessKey
secretKey: testSecretKey
localImageFilePath: /data/localUpdateFile/
otherParam1: 11111
스프링북에서 1.5.x버전에는 설정 대상의 필드에 대한 검증 기능이 추가되었습니다. 클래스에 @Validated 주석을 추가한 다음에 필드에 @NotNull을 추가하면 이 필드가 비어 있을 수 없고 다른 주석을 추가하여 각종 매개 변수 규칙을 검사할 수 있습니다. 그리고 @ConfigurationProperties 주석은 접두사가 통일되어 있음을 나타냅니다. 저희 설정 파일의 대상은 모두 qiniuParam 영역 아래에 속하는 것을 볼 수 있습니다.그래서 우리는prefix=qiniuParam을 추가했습니다. 그리고 주의해야 할 것은 @NotNull 주석은 자바의 원본 형식일 때 효력이 발생하지 않습니다. 설정 파일에서otherParam2는 값이 부여되지 않았지만 시작이 잘못되지 않았습니다. 그는 기본적으로 원본 형식인 int를 0으로 부여하고 int를 Integer로 바꾸면 시작이 잘못됩니다.
(2) 컬렉션 유형 구성 파일
list:
- list_value1
- list_value2
- list_value3
map:
map_key1: map_value1
map_key2: map_value2
컬렉션 유형은 @Value로 주입할 수 없으며 클래스 객체를 통해 구성해야 합니다.
@Validated
@ConfigurationProperties
public class CollectionConfig {
@NotNull
private List list;
@NotNull
private Map map;
}
마찬가지로 매개 변수 검증 주석을 늘려 검증에 협조할 수 있다.또한 설정 파일은list 형식과 맵 형식의 설정 파라미터만 지원합니다.
(3) 기타 @Value를 이용하여list 파라미터를 받아들여야 한다면 @Value 주석의 표현식 함수를 이용하여 해석할 수 있다
@Value("#{'${list}'.split(',')}")
private List<String> list;
@Value("#{${map}}")
private Map<String,String> map;
그리고 설정 파일에
list: topic1,topic2,topic3
map: "{key1: 'value1', key2: 'value2'}"
ps: 위의 맵 해석에서'맵에 대응하는value를 반드시 포장해야 합니다. 그렇지 않으면 해석이 실패하여 맵으로 전환할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.