使用Spring Cloud连接器访问CloudFoundry用户提供的服务

时间:2015-02-17 05:46:59

标签: java spring spring-mvc cloudfoundry spring-cloud

我尝试使用Spring Cloud从Cloud Foundry应用程序中使用通用REST服务。

此服务使用Spring Boot创建,如下所示:

package com.something;

@RestController
public class DemoServiceController {
    @RequestMapping("/sayHi")
    public String sayHi() {
        return "Hello!";
    }
}

这很好用 - 我可以访问http://www.example.com/srv/demo/sayHi并获得"您好!"背部。

接下来,我使用CF-CLI创建了一个用户提供的服务实例,并将其绑定到我的应用程序。我现在可以在VCAP_SERVICES中看到绑定的服务。

cf cups my-demo-service -p '{"url":"http://www.example.com/srv/demo/"}'
cf bs my-demo-app my-demo-service

接下来,如here所述,我将此bean添加到我应用程序的Spring配置中,connector-type设置为我的原始控制器(我也引用了它)。

<cloud:service id="myDemoService"
               service-name="my-demo-service"
               connector-type="com.something.DemoServiceController"
               />

现在,当我将"myDemoService"自动连接到我的应用中时,

@Autowired
private DemoController myDemoService;

我收到错误:

  

找不到指定类型的服务。

我确保包含所有必需的依赖项,包括spring-cloud-spring-service-connectorspring-cloud-cloudfoundry-connector

这里出了什么问题?我给出了错误的bean参数吗?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

Spring Cloud Connectors不知道如何处理此服务,因为每个支持的服务必须是已知类型(MySQL,Postgres,Redis,MongoDB,RabbitMQ等)。将connector-type设置为Controller类不会做你想要的。

您需要做的是创建自定义连接器扩展。以下是执行此操作的项目示例:https://github.com/cf-platform-eng/spring-boot-cities