Spring Boot 구조 기 파라미터 바 인 딩, 점점 강해 집 니 다!

이전 글: Spring Boot 에서 설정 을 읽 는 몇 가지 방식 을 소 개 했 습 니 다. Spring Boot 에서 Java Bean 의 매개 변 수 를 기반 으로 바 인 딩 을 소 개 했 습 니 다. 자바 Bean 류 에 @ConfigurationProperties 주석 표지 (더 많은 Spring Boot 의 튜 토리 얼 은 공중 번호 인 '자바 기술 창고' 가 배경 에서 답장: boot) 를 사용 하 는 것 을 주목 하 십시오.
며칠 전, Spring Boot 2.2.0 이 정식으로 발표 되 었 습 니 다: Spring Boot 2.2.0 이 정식으로 발표 되 었 습 니 다. JDK 13 을 지지 합 니 다!글 에서 구조 기 를 바탕 으로 하 는 매개 변수 바 인 딩 이 언급 되 었 으 니 오늘 스 택 장 은 여러분 을 데 리 고 실천 해 보 겠 습 니 다. 도대체 어떻게 사용 하고 무슨 소 용이 있 습 니까?
쓸데없는 말 은 하지 말고 먼저 예시 코드 를 올 려 라.
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConstructorBinding;
import org.springframework.boot.context.properties.bind.DefaultValue;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;

/**
 *      :Java   
 */
@ConstructorBinding
@ConfigurationProperties(prefix = "tom")
public class TomProperties {

    private String name;
    private String sex;
    private int age;
    private String country;
    private Date entryTime;

    public TomProperties(String name,
                         String sex,
                         int age,
                         @DefaultValue("China") String country,
                         @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date entryTime) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.country = country;
        this.entryTime = entryTime;
    }

    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public String getCountry() {
        return country;
    }

    public Date getEntryTime() {
        return entryTime;
    }

    @Override
    public String toString() {
        return "TomProperties{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", country='" + country + '\'' +
                ", entryTime=" + entryTime +
                '}';
    }

}

프로필 내용:
tom:
  name: Tom
  sex: man
  age: 18
  entry-time: 2012-12-12 12:00:00

매개 변수 결과 출력:
TomProperties{name='Tom', sex='man', age=18, country='China', entryTime=Wed Dec 12 12:00:00 CST 2012}
구조 기의 매개 변수 바 인 딩 을 통 해 사실은 @ConfigurationProperties 주 해 를 바탕 으로 '@ Constructor Binding' 주 해 를 추가 하 는 것 입 니 다.
@ Constructor Binding 몇 가지 요약:
1. @ConstructorBinding 이라는 주 해 를 사용 하면 표지 와 같은 매개 변 수 는 매개 변 수 를 가 진 구조 기 를 통 해 주입 되 고 매개 변 수 를 가 진 구조 기 가 없 으 면 setters 를 통 해 주입 된다.
setters 를 통 해 주입 되 는 지 구조 기 를 통 해 주입 되 는 지 어떻게 판단 합 니까? 이러한 소스 코드 를 보십시오.
org.springframework.boot.context.properties.ConfigurationPropertiesBean.BindMethod
2. @ConstructorBinding 클래스 에 사용 할 때 이 클래스 는 매개 변 수 를 가 진 구조 기 만 있 을 수 있다.만약 에 여러 개의 구조 기 가 있 을 때 @ConstructorBinding 를 구체 적 인 구조 방법 에 직접 연결 할 수 있다.
3. 구성원 변 수 는 final 가 변 하지 않 을 수 있 습 니 다.
4. 이러한 내부 구조 기 주입 형식 을 지원 합 니 다.
5. 기본 값 @DefaultValue, @DateTimeFormat 시간 형식 등 주석 배합 사용 을 지원 합 니 다.
6. 협조 @ConfigurationProperties, @EnableConfigurationProperties 주해 사용 이 필요 하 다.
7. 이미지 @Component, @Bean, @Import 등 방식 으로 bean 의 구조 기 파라미터 바 인 딩 을 만 드 는 것 을 지원 하지 않 습 니 다.
원본 코드 보기:
@Target({ElementType.TYPE, ElementType.CONSTRUCTOR})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConstructorBinding {
}

어떤 매개 변수 도 없 는데 이것 은 구조 기 매개 변수 가 연 결 된 표지 역할 을 한 다 는 것 을 설명 할 수 있다.
포즈 올 렸 죠?또 하나의 바 인 딩 매개 변수 에 대한 새로운 방법 을 배 웠 습 니 다!
모든 Spring Boot 예제 코드 를 가 져 옵 니 다. 위 챗 공식 번호 인 '자바 기술 스 택' 이 배경 에서 키 워드 를 답장 하 는 것 을 주목 하 십시오: bootcode.
끝나 지 않 았 습 니 다. 스 택 장 은 Spring Boot 최신 기술 튜 토리 얼 을 계속 공유 할 것 입 니 다. 지금 은 재 고 를 한 무더기 썼 습 니 다. 위 챗 공식 번호 인 '자바 기술 스 택' 에 관심 을 가지 고 대중 번 호 를 제일 먼저 푸 시 할 것 입 니 다!

좋은 웹페이지 즐겨찾기