不推薦使用Spring Boot 2.2.0 ,這個問題你確定會遇到 (二)

項目推薦: Spring Cloud 、Spring Security OAuth2的RBAC權限管理系統 歡迎關注 最新版本實踐

上篇文章講到 Spring Boot 2.2.0 和 MyBatis 兼容問題,今天再來看一下 這個 boom changegit

ConfigurationProperties 註解使用

如上圖,當配置文件中存在相同組的屬性,用戶名密碼年齡 都屬於用戶屬性的抽象,按面向的規則咱們能夠抽取出一個 UserPO類型使用 @ConfigurationProperties 將外部配置綁定到代碼中的bean。同時能夠像其餘任何Spring bean同樣在整個應用程序代碼中注入和使用此bean。github

  • application.properties
user.username=lengleng
user.password=123456
user.age=26
  • User POJO
/**
 * @author lengleng
 * @date 2019-11-08
 * <p>
 * 2.2 以前版本,必須使用 @Component 或者 @Configuration 聲明成Spring Bean
 */
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String username;

    private String password;

    private Integer age;
   
    ...
}

如上代碼,當咱們在使用 spring boot 2.2 以前版本 必須使用 @Component 或者 @Configuration 聲明成Spring Bean,否則沒法注入spring

  • 這裏注意下 ConfigurationProperties@Value 的區別

ConfigurationPropertiesScan

  • 2.2.0 默認開啓此功能

2.2.0 新增一個 @ConfigurationPropertiesScan 的註解,默認是開啓的掃描 main 啓動類所在的包路徑的全部
ConfigurationProperties,因此能夠不用再加 @Component 或者 @Configurationapp

  • 2.2.1 默認關閉此功能,須要顯式指定此註解

實際在使用過程當中 你會發現 @Profile 和這個註解的兼容問題, @ConfigurationPropertiesScan not compatible with @Profile @ConfigurationProperties
因此 Spring Boot 2.2.1 默認關閉了這個功能spring-boot

若想開啓,只須要在 啓動類加上 post

總結

  1. 當你從 2.1.X 升級到 2.2 ,確定不會遇到這個問題,由於默認兼容 @Component 掃描的形式
  2. 若是從 2.2.0 升級到 2.2.1 , 必定要特別當心此處,可能會致使你的配置類所有失效
  3. 到底加不加,在使用IDEA當前版本 給你提示

IDEA 2019.3 纔會正式支持該註解
spa

相關文章
相關標籤/搜索