学习 webflux,写了一个小例子,居然还出了个错误,控制台输出信息:
No primary or single unique constructor found for interface org.springframework.http.server.ServerHttpRequest
大概的意思是找不到ServerHttpRequest的构造方法,无法注入参数。错误是由下面代码引起的:
@GetMapping("/example")
public Mono<String> example(ServerHttpRequest request) {
// 你可以使用request对象来获取HTTP请求的各种信息
String methodName = request.getMethod().name();
String uri = request.getURI().toString();
// ... 执行其他操作
// 返回一个Mono<String>作为响应
return Mono.just("Received request with method: " + methodName + " and URI: " + uri);
}
想想这么简单的代码,不应该有特别复杂的错误,估计是导入的包错了。注释掉原来的包,再看提示导入类时果然还有其他选择,换了个包,问题就解决了。
//import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpRequest;
上面注释掉的就是原来导错的包。下面是正确的,reactive(反应式)是需要记住的标志性的关键字。