ConfigurationProperties
是SpringBoot
引入的一个和外部配置文件相关的注解类。它能够帮助咱们更好的使用外置的配置文件属性。java
属性注入到Java类数组
@Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ConfigurationProperties { @AliasFor("prefix") String value() default ""; @AliasFor("value") String prefix() default ""; boolean ignoreInvalidFields() default false; boolean ignoreNestedProperties() default false; boolean ignoreUnknownFields() default true; @Deprecated boolean exceptionIfInvalid() default true; }
经过@ConfigurationProperties + @Bean注解在配置类的bean定义方法上app
@Configuration @ConfigurationProperties @PropertySource("classpath:configprops.properties") public class ConfigProperties { public static class Credentials { @Length(max = 4, min = 1) private String authMethod; private String username; private String password; // standard getters and setters } @NotBlank private String host; @Min(1025) @Max(65536) private int port; @Pattern(regexp = "^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,6}$") private String from; private Credentials credentials; private List<String> defaultRecipients; private Map<String, String> additionalHeaders; // standard getters and setters }
默认属性配置从application.properties
文件中获取,也能够经过@PropertySource
指定。 @Configuration
注解不可缺乏。 资源文件内容以下:spa
#Simple properties mail.host=mailer@mail.com mail.port=9000 mail.from=mailer@mail.com #List properties mail.defaultRecipients[0]=admin@mail.com mail.defaultRecipients[1]=owner@mail.com #Map Properties mail.additionalHeaders.redelivery=true mail.additionalHeaders.secure=true #Object properties mail.credentials.username=john mail.credentials.password=password mail.credentials.authMethod=SHA1
内嵌类属性code
mail.credentials.username
能够注入到内嵌属性credentials
中 列表字段mail.defaultRecipients[0]
能够注入到类的列表(数组页能够)属性中。 map字段mail.additionalHeaders.redelivery
格式的配置项也能够注入到Map类型的属性中。@ConfigurationProperties + @EnableConfigurationPropertiesregexp
@Bean @ConfigurationProperties(prefix = "mail") public ConfigProperties mailConfig() { return new ConfigProperties(); }
@SpringBootApplication @EnableConfigurationProperties({ConfigProperties.class}) public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
能够给属性类上加入javax.validation.constraints.*
中的注解,来对配置项进行校验。配合exceptionIfInvalid
能够更早的发现问题。ip