解決springboot利用ConfigurationProperties註解配置數據源無法讀取配置信息問題

@ConfigurationProperties是springboot新加入的註解,主要用於配置文件中的指定鍵值對映射到一個java實體類上。那麼它是怎麼發揮作用的呢?下面我們將揭開@ConfigurationProperties的魔法。

ConfigurationPropertiesBindingPostProcessor這個bean後置處理器,就是來處理bean屬性的綁定的,這個bean後置處理器後文將稱之為properties後置處理器。你需要知道以下幾件事:

ioc容器context的enviroment.propertySources記錄著系統屬性、應用屬性以及springboot的默認配置文件application.properties中的配置屬性等。properties後置處理器就是從其中找到匹配的配置項綁定到bean的屬性上去的。
屬性綁定是有覆蓋性的,操作系統環境變量可以覆蓋配置文件application.properties, java系統屬性可以覆蓋操作系統環境變量。更多的可以參考官網 https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot-features-external-config

重點給大傢介紹springboot配置數據源無法讀取配置信息的問題及解決方案,具體內容如下:

出現的問題:

利用ConfigurationProperties註解配置數據源發現讀取的數據庫配置信息全部為null。

@Bean(name = "pq")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSourcePq() {
        return DataSourceBuilder.create().build();     
    }
#配置信息
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/graduate?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root

debug過後發現配置文件屬性沒有讀取成功

解決方法:

@Bean(name = "pq")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSourcePq() {
        //return DataSourceBuilder.create().build();
        return new DruidDataSource();
    }

出現問題原因:

暫時還不清楚,第一次使用這樣的方式配置數據源,可能有些細節沒有註意到。

以上就是解決springboot利用ConfigurationProperties註解配置數據源無法讀取配置信息問題的詳細內容,更多關於springboot配置數據源無法讀取配置信息的資料請關註WalkonNet其它相關文章!

推薦閱讀: