使用 Spring 云连接器访问 CloudFoundry 用户提供的服务
Accessing CloudFoundry user-provided services using Spring Cloud connectors
我正在尝试使用 Spring Cloud 从 Cloud Foundry 应用程序中使用通用 REST 服务。
此服务是使用Spring引导创建的,如下:
package com.something;
@RestController
public class DemoServiceController {
@RequestMapping("/sayHi")
public String sayHi() {
return "Hello!";
}
}
这很好用 - 我可以访问 http://www.example.com/srv/demo/sayHi
并返回 "Hello!"。
接下来,我使用 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;
我得到一个错误:
No services of the specified type could be found.
我已确保包含所有必需的依赖项,包括 spring-cloud-spring-service-connector
和 spring-cloud-cloudfoundry-connector
。
这里出了什么问题?我给了错误的 bean 参数吗?非常感谢任何帮助。
Spring 云连接器不知道如何处理此服务,因为每个支持的服务都必须是已知类型(MySQL、Postgres、Redis、MongoDB、 RabbitMQ 等)。将 connector-type
设置为您的控制器 class 不会执行您想要的操作。
您需要做的是创建自定义连接器扩展。这是一个执行此操作的项目示例:https://github.com/cf-platform-eng/spring-boot-cities.
我正在尝试使用 Spring Cloud 从 Cloud Foundry 应用程序中使用通用 REST 服务。
此服务是使用Spring引导创建的,如下:
package com.something;
@RestController
public class DemoServiceController {
@RequestMapping("/sayHi")
public String sayHi() {
return "Hello!";
}
}
这很好用 - 我可以访问 http://www.example.com/srv/demo/sayHi
并返回 "Hello!"。
接下来,我使用 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;
我得到一个错误:
No services of the specified type could be found.
我已确保包含所有必需的依赖项,包括 spring-cloud-spring-service-connector
和 spring-cloud-cloudfoundry-connector
。
这里出了什么问题?我给了错误的 bean 参数吗?非常感谢任何帮助。
Spring 云连接器不知道如何处理此服务,因为每个支持的服务都必须是已知类型(MySQL、Postgres、Redis、MongoDB、 RabbitMQ 等)。将 connector-type
设置为您的控制器 class 不会执行您想要的操作。
您需要做的是创建自定义连接器扩展。这是一个执行此操作的项目示例:https://github.com/cf-platform-eng/spring-boot-cities.