Spring启动注入mongodb数据源

时间:2016-06-01 14:00:47

标签: java mongodb spring-boot cloudfoundry spring-data-mongodb

我正在尝试将连接到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提供。我应该使用哪个类来获取这些配置详细信息?

2 个答案:

答案 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}