Spring Boot
在支持application.properties
配置文件的同時,也支持application.yaml
配置文件.
配置文件中的屬性,能夠經過:java
@Value
註解將屬性值注入Bean
中;@ConfigurationProperties
註解將屬性值注入Bean
中.此處不推薦使用@Value
方式注入屬性,緣由有二:程序員
Map
,Object
;@Length
,@Size
等.#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 mail.additionalHeaders.p3=value #Object properties mail.credentials.username=john mail.credentials.password=password mail.credentials.authMethod=SHA1
以上爲application.properties
示範配置,下面將使用yaml表示:spring
#Simple properties mail: host: mailer@mail.com port: 9000 from: mailer@mail.com #List properties defaultRecipients: - admin@mail.com - owner@mail.com #Map Properties additionalHeaders: redelivery: true secure: true p3: true #Object properties credentials: username: john password: password authMethod: SHA1
經過兩份配置文件的比較,我的認爲Yaml
配置文件經過樹形結構更加清晰明瞭
.
兩份文件同時展現了List
,Map
,Object
形式配置文件的設置,可供你們參考.微信
@Getter @Setter @Configuration //@PropertySource("classpath:configprops.properties") @ConfigurationProperties(prefix = "mail") @Validated public class ConfigProperties { @Validated @Getter @Setter public static class Credentials { @Length(max = 4, min = 1) private String authMethod; private String username; private String password; } @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; }
上述代碼爲獲取Yaml
配置文件中的屬性值類,而且使用Configuration
將類做爲Bean
提供給程序使用(能夠去除此註解,將屬性類型經過@Autowired
註解注入Bean
中).
注意,此處使用@ConfigurationProperties
註解,獲取前綴爲mail
的屬性值.數據結構
Tips:app
@NotBlank
,@Pattern
等;public static class Credentials
類,將屬性值注入Object
對象內;@PropertySource
註解實現從指定的配置文件讀取屬性設置.hello.world.name=xiaoming
或者spring-boot
hello: world: name: xiaoming
在屬性文件中添加以上配置:學習
@RestController public class HelloController { @Value("${hello.world.name}") private String name; }
在Bean
中能夠經過@Value
獲取屬性值.
關於@value
的文章較多,想深刻了解的同窗能夠搜索學習.spa
pom
依賴<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
PS:
若是您以爲個人文章對您有幫助,請關注個人微信公衆號,謝謝!
code