'producer' type is unknown to ReactiveAdapterRegistry (WebFlux handler)

在使用WebFlux做练习的时候,提示'producer' type is unknown to ReactiveAdapterRegistry

//创建Router路由

public RouterFunction<ServerResponse> routerFunction(){
    UserService userService = new UserServiceImpl();
UserHandler userHandler = new UserHandler(userService);
//设置路由
return RouterFunctions.route(
GET("/users/{id}").and(accept(MediaType.APPLICATION_JSON)), userHandler::getUserById)
.andRoute(GET("/users").and(accept(MediaType.APPLICATION_JSON)), userHandler::getAllUser)
.andRoute(POST("/saveusers").and(accept(MediaType.APPLICATION_JSON)),userHandler::addUser);

}

调用
getUserById()方法时提示这个错误,该方法如下
public Mono<ServerResponse> getUserById(ServerRequest request){
Integer id = Integer.valueOf(request.pathVariable("id"));
//空值处理
Mono<ServerResponse> responseMono = ServerResponse.notFound().build();
Mono<User> userMono = userService.getUserById(id);
//将userMono进行数据处理
//使用Reactor操作符flatMap
return userMono.flatMap(user ->
ServerResponse.ok().contentType(MediaType.APPLICATION_JSON)
.body(user,User.class)).switchIfEmpty(responseMono);

}
在一篇文章中看到,需要将返回的body方法改为bodyValue即可,如下所示
return userMono.flatMap(user ->
ServerResponse.ok().contentType(MediaType.APPLICATION_JSON)
.bodyValue(user)).switchIfEmpty(responseMono);

修改后再访问即可正常访问
posted @ 2022-06-06 14:27  蝴蝶梦南华  阅读(1258)  评论(0)    收藏  举报