[英]spring boot database error datasource "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration”
[英]How to autoconfigure datasource using java-cfenv-boot
根據我收集的信息(參見此處),將 java-cfenv-boot 添加為 maven 依賴項應該會自動配置雲代工廠部署的可用數據源。 但是,在部署時,它無法找到所需的參數。
應用程序能夠以字符串形式訪問 vcap.services 數據,該字符串可以使用 CfJdbcEnv 進行解析。 但是如果我嘗試訪問屬性文件中的數據,我只能直接訪問vcap.services
,而不能訪問單個服務數據,即vcap.services.<service-label>
數據不可用。
我是否需要向 pom 或屬性添加任何其他內容以使用環境數據自動配置數據源?
不是個別服務數據,即 vcap.services。 數據不可用。
在屬性或 YAML Spring 引導配置文件中, vcap.services.<foo>
屬性由 Spring 引導本身設置,而不是 java-cfenv 庫。
請參閱CloudFoundryVcapEnvironmentPostProcessor 。
如果它們沒有設置,那么我的第一個想法是后處理器沒有運行。 這看起來很奇怪,您可能想查看您的應用程序中發生了什么,但是,這並不是絕對必要的。
您可以使用 java-cfenv 獲取屬性。 為此,您需要創建一個CfEnv
bean,然后您可以使用 SPeL 來使用 bean 來訪問配置文件中的屬性。
創建 bean:
@Bean public CfEnv cfEnv() { return new CfEnv(); }
或者,對於 JDBC,您可以創建一個更方便的CfJdbcEnv
。
@Bean public CfJdbcEnv cfJdbcEnv() { return new CfJdbcEnv(); }
使用 SPeL 表達式來調用 bean。
使用CfJdbcEnv
示例
spring.datasource.url=#{ cfJdbcEnv.findJdbcService().getUrl() }
以及使用CfEnv
的示例。
spring.datasource.username=#{ cfEnv.findCredentialsByTag('my-db').get('username') }
參考文檔: https://github.com/pivotal-cf/java-cfenv/#use-with-spring
我是否需要向 pom 或屬性添加任何其他內容以使用環境數據自動配置數據源?
對於常見的屬性,我上面提到的甚至都不是必需的。 例如,應該自動設置spring.datasource.url
屬性。
CfDataSourceEnvironmentPostProcessor
設置 Spring 引導屬性spring.datasource.url
。 不過,這也是一個后處理器,並且由於您似乎在使用后處理器時遇到了問題,因此CloudFoundryVcapEnvironmentPostProcessor
似乎也無法正常工作,這可能是您的問題的原因。
參考文檔: https://github.com/pivotal-cf/java-cfenv/#using-spring-boot
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.