SpringBoot 프로파일 유무 YML와 속성은 일부 기사가 더 나은, YML 데이터 중심의 말을보고, 두 가지입니다. 개인적으로 나는 그래서 여기에 특성 형식으로 예입니다, 더 나은 특성을 가진 것을 느낀다.

우리 모두는 비교, 그러한 xxx.domain = www.xxx.com로 구성된 특정 도메인 이름과 같은 값을 구성하는 경우 @Value 노트 그래서 직접 코드에서 @Value를 익숙해, 구성 프로파일에서 읽을 수 있습니다 알고 편리합니다.

이 같은 코드 관련 구성과 관련 구성의 그룹 인 경우 인증 코드 길이가 구성되어 있는지 확인하고 싶은 경우에, 번호, 전화 번호, 이메일 주소 확인 코드 검증 사진이있다. springboot 구성 등의 여부,

서면으로 참조 :

확실히 그래!

참조 소스를 살펴 보자의 springboot이 수행하는 방법입니다, 배울 수있는 가장 좋은 방법입니다

분류 구성 서버에 해당 ServerProperties (문제를 설명하기 위해 부분적으로 만 멤버 변수 붙여)
 
   
코드를 복사
@ConfigurationProperties (접두사 = "서버", ignoreUnknownFields = TRUE) 
공용 클래스 ServerProperties의 
        구현 {순서가 EmbeddedServletContainerCustomizer, EnvironmentAware, 

    / ** 
     * 서버 HTTP 포트. 
     * / 
    개인 정수 포트; 

    @NestedConfigurationProperty   
    전용 압축 압축 = 새로운 압축 (); 

  //省略其他成员变量, 게터, 세터
코드를 복사
 
   
코드의 압축 기반 부분 :
코드를 복사
공용 클래스 압축 { 

    / ** 
     응답 압축을 사용하는 경우 *. 
     * / 
    전용 부울 활성화 = 거짓;
코드를 복사

 독서 후 매우 명확해야하고, 그 이유는 server.port = 8081, server.display 이름 = 쓸 수 , server.compression.enabled = 사실, lhyapp을 하기 때문에  ServerProperties  클래스 사용

 @ConfigurationProperties (접두사 = "서버", ignoreUnknownFields = TRUE) server.compression.enabled = 사실은 이런 종류의 뭔가를 원하는 경우, 접두사 접두사 구성 파일을 지정 주석, 우리는 클래스 명성을 압축 한 다음 필요 ServerProperties  이 클래스에서 참조, 속성 이름은 구성 프로파일의 이름에 해당합니다.

 

 @ConfigurationProperties :

  SpringBoot 해당 구성 바인딩이 클래스의 모든 속성과 구성 파일을에게,
   접두사 = "XXX": 다음의 모든 하나의 매핑을 특성있는 프로필

 만이 컴퍼넌트가 컨테이너를 제공하기 위해, 조립 컨테이너입니다 @ConfigurationProperties가 작동,
 @ConfigurationProperties (접두사 = "XXX")이 전역 기본 구성 파일에서 값을 가져;

를 달성하기 위해 아래 위의 검증 코드 구성, 당신은 클래스가 필요 말했다 :

코드 : 
CoreConfiguration.java
코드를 복사
@Configuration 
@EnableConfigurationProperties (SecurityProperties.class) 
공용 클래스 CoreConfiguration { 

    //配置一些콩 
    // @ 콩 
    // 공공 XXXX xxxx를 () {} 
}
코드를 복사
SecurityProperties.java
코드를 복사
@ConfigurationProperties (접두사 = "MyApp를") 
공용 클래스 SecurityProperties { 

    개인 ValidateCodeProperties 코드 = 새로운 ValidateCodeProperties (); 

    공공 ValidateCodeProperties getCode () { 
        리턴 코드; 
    } 

    공개 무효 setCode (ValidateCodeProperties 코드) { 
        this.code = 코드; 
    } 
}
코드를 복사
ValidateCodeProperties.java
코드를 복사
public class ValidateCodeProperties {

    private SmsCodeProperties sms = new SmsCodeProperties();

    private ImageCodeProperties image = new ImageCodeProperties();

    public SmsCodeProperties getSms() {
        return sms;
    }

    public void setSms(SmsCodeProperties sms) {
        this.sms = sms;
    }

    public ImageCodeProperties getImage() {
        return image;
    }

    public void setImage(ImageCodeProperties image) {
        this.image = image;
    }
}
코드를 복사
SmsCodeProperties.java
코드를 복사
public class SmsCodeProperties {

    private int length = 4;

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }
}
코드를 복사
在application.properties 里配置
myapp.code.sms.length = 10
使用配置:
코드를 복사
  @Autowired
    private SecurityProperties securityProperties;

    @RequestMapping("/length")
    public @ResponseBody String length(){
        int length = securityProperties.getCode().getSms().getLength();
        return String.valueOf(length);
    }
코드를 복사