我创建了一个 RestController,如下所示:
@RestController
public class GreetingController {
@RequestMapping(value = "/greetings", method = RequestMethod.GET)
public Mono<Greeting> greeting(HttpServletRequest request) {
return Mono.just(new Greeting("Hello..." + request.toString()));
}
}
不幸的是,当我尝试点击“问候”端点时,出现异常:
java.lang.IllegalStateException:类型参数 [0] 没有解析器
[org.apache.catalina.servlet4preview.http.HttpServletRequest]
我在用
compile('org.springframework.boot.experimental:spring-boot-starter-web-reactive')
如何解决这个问题?
Link http://pastebin.com/heybvCeK完整的堆栈跟踪。Link http://pastebin.com/U9t60NUw构建.gradle
- - - - - 编辑 - - - - -
使用接口。现在得到:
java.lang.IllegalStateException:类型参数 [0] 没有解析器
[javax.servlet.http.HttpServletRequest] 方法(其余相同)
你应该never在 Spring Reactive Web 应用程序中使用 Servlet API。这是不支持的,这使得您的应用程序依赖于容器,而 Spring Web Reactive 可以与非 Servlet 运行时(例如 Netty)一起使用。
相反,您应该使用 Spring 提供的 HTTP API;这是您的代码示例,做了一些更改:
import org.springframework.http.server.reactive.ServletServerHttpRequest;
@RestController
public class GreetingController {
@GetMapping("/greetings")
public Mono<Greeting> greeting(ServerHttpRequest request) {
return Mono.just(new Greeting("Hello..." + request.getURI().toString()));
}
}
您可以注射ServerWebExchange
或直接ServerHttpRequest
/ ServerHttpResponse
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)