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