我正在尝试使用 spring web 响应式创建一个 RESTful 服务。我有一个具有通常结构的控制器
package com.hcl.bc4sc.server.controller;
...
@RestController
@RequestMapping("/api/v1/registrar/enroll")
public class ControllerV1RegistrarEnroll {
...
@RequestMapping(method = RequestMethod.POST, consumes = "application/json")
public Mono<ResponseEntity> registrarEnrollPost(@RequestBody final UserInfo userInfo) {
...
我正在使用@ComponentScan 让控制器像这样注册
@Configuration
@ComponentScan(basePackages = "com.hcl.bc4sc.server.controller")
public class ServerInitialization {
...
我的 ServerInitialization 类中的各种 bean 正在被定义,所以我知道 Spring 正在处理 ServerInitialization。
我想知道问题是否可能与我启动 Spring 和 HttpServer 的方式有关:
public static void boot() throws TimeoutException {
final GenericApplicationContext context
= new AnnotationConfigApplicationContext(DelegatingWebReactiveConfiguration.class,
ServerInitialization.class);
final HttpHandler handler = DispatcherHandler.toHttpHandler(context);
final ServerConfig config = context.getBean(ServerConfig.class);
applicationContext = Optional.of(context);
// Reactor Netty
final Function<HttpChannel, Mono<Void>> adapter
= new ReactorHttpHandlerAdapter(handler);
final HttpServer server = HttpServer.create(config.getHost(), config.getPort());
httpServer = Optional.of(server);
server.ws("", adapter).startAndAwait();
}
当我尝试对此进行测试时,我使用 url http://localhost/api/v1/registrar/enroll
。它返回一个 404。
如果我应该以不同的方式开始我的服务,有人可以指点我一个很好的完整工作示例吗?