종속성 추가
먼저 Spring Boot 종속성을 추가해야 합니다.
간단한 예
@ConfigurationProperties는 @Configuration과 함께 사용해야 합니다. 일반적으로 다음에서 수행합니다. POJO 구성:
@Data@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { private String hostName; private int private String from;}
위의 예에서는 mail Properties로 시작하는 모든 속성 파일을 읽습니다. 그리고 이를 Bean의 필드와 일치시킵니다.
#Simple Propertiesmail.hostname=host@mail.commail.port=9000mail.from=mailer@mail.com
Spring의 속성 이름 일치는 다음과 같이 다양한 형식을 지원합니다.
mail.hostNamemail.hostnamemail.host_namemail.host-namemail.HOST_NAME
@Configuration을 사용하지 않으려면 다음과 같이 @EnableConfigurationProperties 주석에서 구성 파일을 수동으로 가져와야 합니다.
@SpringBootApplication@EnableConfigurationProperties(ConfigProperties.class)public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args) }}
@에서 구성 파일을 지정할 수도 있습니다. ConfigurationPropertiesScan 경로:
@SpringBootApplication@ConfigurationPropertiesScan("com.flydean.config") public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args) }}
여기서 이 경우 프로그램은 com.flydean.config 패키지의 구성 파일만 찾습니다.
속성 중첩
클래스, 목록, 맵을 중첩할 수 있습니다. 아래 예를 들어 먼저 공통 POJO를 만들어 보겠습니다.
@Datapublic class Credentials { private String authMethod;
그런 다음 중첩된 구성 파일을 만듭니다. @Data@Configuration@ConfigurationProperties(prefix = "nestmail") public class NestConfigProperties { private String host; private int port; private List@ConfigurationProperties 및 @Bean
@ConfigurationProperties는 다음과 같이 @Bean과 함께 사용할 수도 있습니다. @Datapublic 클래스 항목 { private String name; private int size;} 방법 보기 사용하려면: @Data@Configurationpublic class BeanConfigProperties { @Bean @ConfigurationProperties(prefix = "item") public Item item() { return new Item() }}속성 확인
@ ConfigurationProperties는 속성 유효성 검사를 위한 표준 JSR-303 형식입니다. 예를 들어 보겠습니다. @Data@Validated@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { @NotEmpty private String hostName; @Min(1025) @Max(65536) private int port; = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$") private String from;}If 속성이 항소 조건을 충족하지 않으면 다음 예외가 발생할 수 있습니다. 대상 org.springframework.boot.context.properties.bind.BindException에 바인딩: 'mail' 아래의 속성을 com.flydean.config.ConfigProperties에 바인딩하지 못했습니다. $$EnhancerBySpringCGLIB$ $f0f87cb9 실패: 속성: mail.port 값: 0 이유: 최소값은 1025보다 작을 수 없습니다. 속성: mail.hostName 값: null 이유: 비워둘 수 없습니다. 작업: 애플리케이션 구성 업데이트프로세스가 종료 코드 1로 완료되었습니다.속성 변환
@ConfigurationProperties에서는 여러 속성 변환도 지원합니다. 아래에서는 Duration 및 DataSize를 예로 들어 보겠습니다. 두 개의 Duration 필드를 정의합니다. @ConfigurationProperties(prefix = "conversion") public class PropertyConversion { private Duration timeInDefaultUnit; private Duration timeInNano ...}속성 파일에서 다음 두 필드를 정의하세요.conversion.timeInDefaultUnit=10conversion.timeInNano=9ns
위 속성은 단위를 가질 수 있음을 알 수 있습니다. 선택적 단위는 ns, us, ms, s, m, h 및 d이며 각각 나노초, 마이크로초, 밀리초, 초, 분, 시간 및 일에 해당합니다. 기본 단위는 밀리초입니다. 주석에 단위를 지정할 수도 있습니다.
@DurationUnit(ChronoUnit.DAYS)private Duration timeInDays;
해당 구성 파일은 다음과 같습니다.
conversion.timeInDays=2
사용 방법을 살펴보겠습니다. DataSize:
private DataSize sizeInGB; @DataSizeUnit(DataUnit.TERABYTES)private DataSize sizeInTB;
해당 속성 파일:
conversion.sizeInDefaultUnit=300conversion.sizeInGB=2GBconversion.sizeInTB=4
Datasize는 B를 지원합니다. KB, MB, GB 및 TB.
사용자 정의 변환기
동일한 Spring Boot는 사용자 정의 속성 변환기도 지원합니다. 먼저 POJO 클래스를 정의합니다:
public class Employee { private String name; private double Salary;}
해당 속성 파일:
conversion.employee=john,2000
Converter의 변환 클래스를 구현해야 합니다. 인터페이스 자체:
@Component@ConfigurationPropertiesBindingpublic 클래스 EmployeeConverter는 Converter
위 내용은 SpringBoot에서 @ConfigurationProperties를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!