[英]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.