Spring Boot中使用@ConfigurationProperties 注解

版权声明:本文为博主原创文章,转载请标注出处。 https://blog.csdn.net/qq27Ke/article/details/82154588

Spring Boot 最大的优点之一就是可扩展的配置和简单的访问配置文件。为了演示demo,这里添加hibernate validation的依赖:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>5.4.1.Final</version>
</dependency>

demo邮件信息实体类:

@Configuration
@ConfigurationProperties
public class ConfigProperties {

    public static class Credentials {
        private String authMethod;
        private String username;
        private String password;

       // standard getters and setters
    }
    private String host;
    private int port;
    private String from;
    private Credentials credentials;
    private List<String> defaultRecipients;
    private Map<String, String> additionalHeaders;

    // standard getters and setters
}

当配置中前缀相同时,最好写好注释,我们也可以使用自定义的源,比如:

@Configuration
@PropertySource("classpath:configprops.properties")
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {
    // previous code
}

这样,属性文件中定义的具有前缀’mail’和与对象其中一个属性同名的任何属性都被自动分配给这个对象。

默认情况下,对象中的Credentials 对象属性也可以通过配置的方式绑定:

mail.credentials.auth_method
mail.credentials.auth-method
mail.credentials_AUTH_METHOD
mail.CREDENTIALS_AUTH_METHOD

同样的,List 或者Map属性也依然可以通过这种方式绑定赋值:

#Simple properties
[email protected]
mail.port=9000
[email protected]

#List properties
mail.defaultRecipients[0][email protected]
mail.defaultRecipients[1][email protected]

#Map Properties
mail.additionalHeaders.redelivery=true
mail.additionalHeaders.secure=true

#Object properties
mail.credentials.username=john
mail.credentials.password=password
mail.credentials.authMethod=SHA1

代码见springboot09

猜你喜欢

转载自blog.csdn.net/qq27Ke/article/details/82154588