Spring boot 2.2.1 @ConfigurationProperties 不生效的问题

ConfigurationProperties 注解使用

当配置文件中存在相同组的属性,用户名、密码、年龄 都属于用户属性的抽象,按面向的规则我们可以抽取出一个 User 的PO类型使用 @ConfigurationProperties 将外部配置绑定到代码中的bean。同时可以像其他任何Spring bean一样在整个应用程序代码中注入和使用此bean。

/**
 * 2.2 之前版本,必须使用 @Component 或者 @Configuration 声明成Spring Bean
 */
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String username;

    private String password;

    private Integer age;
   
    ...
}

ConfigurationPropertiesScan

Spring boot 2.2.0 新增一个 @ConfigurationPropertiesScan 的注解,默认是开启的扫描 main 启动类所在的包路径的所有
ConfigurationProperties, 所以可以不用再加 @Component 或者 @Configuration ;

Spring boot 2.2.1 默认关闭此功能,需要显式指定此注解,实际在使用过程中 你会发现 @Profile 和这个注解的兼容问题, @ConfigurationPropertiesScan not compatible with @Profile @ConfigurationProperties,所以 Spring Boot 2.2.1 默认关闭了这个功能;

如果需要开启,在启动类上加@ConfigurationPropertiesScan即可;

你可能感兴趣的:(Java)