1

mongodbインスタンスに接続されたスプリングブートアプリケーションをクラウドファウンドリにデプロイしようとしています。スプリングブートインジェクションmongodbデータソース

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

のMongoDBインスタンスへの接続の詳細はVCAP_SERVICES環境変数です。アプリケーションをcloudfoundryにデプロイするときに、springブートがlocalhost:27017のmongodbにアクセスしようとしていて、明らかに失敗します。

VCAP_SERVICES環境変数を解析し、そこからいくつかのmongodb接続の詳細を構築し、これをspring beanとして提供したいと思います。これらの設定の詳細にはどのクラスを使用する必要がありますか?

+0

は私がAbstractMongoConfiguration' '拡張Configurationクラスを登録することで、問題を解決しました。このクラスでは、vcap_services環境変数が解析され、override mongo()メソッドによって返されたMongoオブジェクトに挿入されます。 – user152468

+0

あなたはそれをどのように修正したかもっと詳しく表示してください、私は同じ問題を抱えています。 – Jesse

答えて

1

Spring Bootでは、VCAP_SERVICESを手動で解析する必要はありません。 MongoTemplateまたはMongoRepositoryを使用している場合、自動的にバインドされたインスタンスに接続します。

spring-boot-startter-parentがpom.xmlの親アーティファクトとして識別されていることを確認してください。

あなたは雲のコネクタコードをピックアップ取得されていることを確認するためにあなたのpom.xmlに以下を追加することができます。もちろん

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-cloud-connectors</artifactId> 
    </dependency> 

を、あなたはまた、MongoDBの春のデータ依存性を必要とする:

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

私はこれを正確に試しましたが、アプリはまだlocalhost:27017に接続しようとしています。 – user152468

+0

これをPOMに追加するときは、他のアノテーションを追加する必要がありますか?私はuser152469と同じ問題を抱えています。 – Jesse

+0

mongodbデータの依存関係が含まれていることを確認してください。 groupId:org.springframework.boot \t \t \t artifactId:spring-boot-starter-data-mongodb –

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}