4

我正在尝试使用 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

接下来,如此所述,我将此 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 参数?任何帮助深表感谢。

4

1 回答 1

5

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

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

于 2015-02-17T22:58:39.150 回答