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