[英]Cloud properties not read by Spring application in Cloudfoundry
我正在Cloudfoundry中部署一個需要訪問mysql數據庫的Spring應用程序。 現在按照本教程 ,如果春季版本高於3.1,則可以為雲使用配置文件,並且該應用程序可以使用雲屬性。 在我的情況下,mysql服務已注冊為p-mysql,因此我的spring配置看起來像這樣
<beans profile="cloud">
<context:property-placeholder location="classpath:/app.conf" />
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"
p:location="file:#{systemProperties['app.conf']}" />
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!-- DB connection properties -->
<property name="driverClass" value="${db_driver:oracle.jdbc.OracleDriver}" />
<property name="jdbcUrl" value="${cloud.services.p-mysql.connection.jdbcUrl}" />
<property name="user" value="${cloud.services.p-mysql.connection.username}" />
<property name="password" value="${cloud.services.p-mysql.connection.password}" />
</bean>
</beans>
我需要app.conf用於與數據庫服務無關的其他鍵。 當我部署這個我得到錯誤
OUT org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'datasource' defined in URL [jar:file:/home/vcap/app/.java-buildpack/tomcat/webapps/ROOT/WEB-INF/lib/test-server-1.3.0.BUILD-SNAPSHOT.jar!/spring-bootstrap.xml]: Could not resolve placeholder 'cloud.services.p-mysql.connection.jdbcUrl'
有什么我想念的東西,當我為應用程序尋找環境時,我確實看到了可用於該應用程序的屬性(cf env app_name)
我可能錯過了什么? 我是否必須包括
任何提及cloudfoundry-runtime
文檔cloudfoundry-runtime
過時。 當前文檔建議對Cloud Foundry上的Spring應用程序使用Spring Cloud Connector。
您應該在項目中包含Spring Cloud Connectors ,然后您可以執行以下操作:
<cloud:data-source id="datasource" service-name="mysql-service"/>
如果確實需要更多控制,也可以使用屬性占位符自己創建datasource
bean。 有關通過XML配置Spring Cloud Connector的其他文檔在這里: https : //github.com/spring-cloud/spring-cloud-connectors/tree/master/spring-cloud-spring-service-connector#the-cloud-namespace
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.