spring-boot의 읽기 프로필

5713 단어
전언
어떤 프로젝트든 프로필이 적을 수 없기 때문에 프로필은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를 반드시 포장해야 합니다. 그렇지 않으면 해석이 실패하여 맵으로 전환할 수 없습니다.

좋은 웹페이지 즐겨찾기