sourcetip

@Configuration Properties:바인딩 클래스의 기본값

fileupload 2023. 3. 19. 18:26
반응형

@Configuration Properties:바인딩 클래스의 기본값

컨피규레이션클래스가 있어요FooConfig거기서 나는 '푸'라는 제본 수업을 듣는다.

@Configuration
@ConfigurationProperties("foo")
public class FooConfig {

  @Value("${foo.default.iterations}")
  private Integer iterations;

  private Foo foo;

  // getter / setter

}

우리 반에서Foo속성 파일에서 명시적으로 설정되지 않은 경우 기존 기본 구성 값을 사용하여 반복 변수를 설정합니다.

public class Foo {

  private String name;

  @Value("${foo.default.iterations}")
  private Integer iterations;

  // getter / setter

}

내 속성 파일

foo.default.iterations=999

# if this is set this config is bound (wins) in FooConfig-class as expected
# foo.iterations=111

foo.foo.name=foo

디폴트값 설정FooConfig효과가 있지만, 내가 속한 클래스에서는 그렇지 않다.Foo.

내가 뭘 놓쳤지?

섞으면 안 돼@Value그리고.@ConfigurationProperties같은 반에서디폴트값을 사용하는 경우@ConfigurationProperties-syslog 클래스는 기본값으로 필드를 설정할 수 있습니다.

@ConfigurationProperties("foo")
public class FooConfig {

    private Integer iterations = 999;

    // getter / setter

}

이 변경에 의해, 다음과 같이 생성되는 메타데이터에 디폴트치를 포함할 수 있는 메리트가 추가됩니다.spring-boot-configuration-processor메타데이터는 IDE에서 편집 시 자동 완료를 제공하기 위해 사용됩니다.application.properties그리고.application.yaml파일을 표시합니다.

마지막으로, 고객님의 문제와 직접 관련이 없는 경우@ConfigurationPropertiesclass에 주석을 붙이면 안 됩니다.@Configuration. AN@Configurationclass는 class를 사용하여 bean을 설정합니다.@Bean방법들.당신의.FooConfig클래스에 주석을 달아야 합니다.@Component그렇지 않으면@EnableConfigurationProperties(FooConfig.class)에서@Configuration사용하고 싶은 클래스FooConfig.

디폴트값 입력resources/application.yml그런 다음 외부 장치를 제공하여 재정의할 수 있습니다.application.yml(패키지화된 항아리) 파일.

언급URL : https://stackoverflow.com/questions/51608371/configurationproperties-default-value-in-bound-class

반응형