2016-06-01 13 views
1

Ich versuche, eine Spring-Boot-Anwendung, die mit einer mongodb-Instanz verbunden ist, zu Cloud Foundry zu implementieren.Spring Boot inject mongodb datasource

cf create-service MongoService default my-mongo 
cf push myapp --no-start 
cf bind-service myapp my-mongo 
cf start myapp 

Die Verbindungsdetails zum mongodb Beispiel sind in dem VCAP_SERVICES Umgebungsvariable. Bei der Bereitstellung meiner Anwendung auf cloudfoundry versucht Spring Boot auf mongodb auf localhost: 27017 zuzugreifen und schlägt offensichtlich fehl.

Ich möchte die Umgebungsvariable VCAP_SERVICES analysieren, einige mongodb Verbindungsdetails daraus erstellen und diese als eine Frühlingsbohne bereitstellen. Welche Klasse sollte ich für diese Konfigurationsdetails verwenden?

+0

ich das Problem gelöst haben, indem Sie eine Konfigurationsklasse registrieren, die 'AbstractMongoConfiguration' erstreckt. In dieser Klasse wird die Umgebungsvariable vcap_services analysiert und in das von der override mongo() -Methode zurückgegebene Mongo-Objekt eingefügt. – user152468

+0

Bitte zeigen Sie mehr Details, wie Sie es behoben haben, habe ich das gleiche Problem. – Jesse

Antwort

1

Mit Spring Boot müssen Sie VCAP_SERVICES nicht manuell parsen. Wenn Sie MongoTemplate oder MongoRepository verwenden, wird automatisch eine Verbindung zur gebundenen Instanz hergestellt.

Stellen Sie sicher, dass Sie spring-boot-starter-parent als das übergeordnete Artefakt in Ihrer pom.xml identifiziert haben.

Sie Folgendes zu Ihrer pom.xml hinzufügen, um sicherzustellen, dass die Cloud-Anschluss-Code wird abgeholt zu werden:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-mongodb</artifactId> 
    </dependency> 
:

Sie auch die MongoDB Spring Data Abhängigkeit benötigen
<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-cloud-connectors</artifactId> 
    </dependency> 

Natürlich

+0

Ich habe genau das versucht, aber die App versucht immer noch, sich mit localhost: 27017 zu verbinden. – user152468

+0

Muss ich beim Hinzufügen zu POM weitere Anmerkungen hinzufügen, damit dies funktioniert? Ich habe das gleiche Problem wie user152469 – Jesse

+0

Seien Sie sicher, dass Sie die mongodb Datenabhängigkeit enthalten haben. groupId: org.springframework.boot \t \t \t artifactId: Spring-Boot-Starter-Daten-mongodb –

0

Sie können versuchen, die Konfigurationsparameter zu konfigurieren, wie eine Problemumgehung, die ich mit MySQL implementieren musste, überprüfen Sie this question.

Für mich ist es vor allem darum geht folgenden Eigenschaften, um richtig zu definieren:

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} 
Verwandte Themen