我正在尝试将连接到mongodb实例的spring boot应用程序部署到云代工厂。
attribute_sets = $('.attribute_set :selected').map(function(i, selected){
return {
'id' : $(this).val(),
'name' : $(this).text(),
}
}).get();
mongodb实例的连接详细信息位于cf create-service MongoService default my-mongo
cf push myapp --no-start
cf bind-service myapp my-mongo
cf start myapp
环境变量中。当我的应用程序部署到cloudfoundry时,spring boot正试图访问localhost:27017上的mongodb并且显然会失败。
我想解析VCAP_SERVICES
环境变量,从中构造一些mongodb连接细节,并将其作为一个spring bean提供。我应该使用哪个类来获取这些配置详细信息?
答案 0 :(得分:1)
使用Spring Boot,您无需手动解析VCAP_SERVICES。如果您使用的是MongoTemplate或MongoRepository,它将自动连接到绑定的实例。
确保将 spring-boot-starter-parent 标识为pom.xml中的父工件。
您可以将以下内容添加到您的pom.xml中,以确保获取云连接器代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cloud-connectors</artifactId>
</dependency>
当然,您还需要MongoDB Spring Data依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
答案 1 :(得分:0)
您可能想尝试设置配置参数,例如我必须使用MySQL实现的解决方法,请检查this question。
对我来说,这一切都归结为正确定义以下属性:
spring:
datasource:
url: jdbc:mysql://${vcap.services.mydb.credentials.host}:${vcap.services.mydb.credentials.port}/${vcap.services.mydb.credentials.name}
driver-class-name: com.mysql.jdbc.Driver
username: ${vcap.services.mydb.credentials.user}
password: ${vcap.services.mydb.credentials.password}