是否可以有两个不同的@RestController在 Springboot 中使用不同的 MappingJackson2HttpMessageConverter?...或者 MappingJackson2HttpMessageConverter 对于 Spring Boot 应用程序中的所有 @RestController 来说是通用的吗?
基本上,目标是使用不同的 MappingJackson2HttpMessageConverter,其中包含不同的 Jackson ObjectMapper,该对象使用 Jackson MixIn 将 id(在 Json 中)重命名为第二个控制器中的 PriceId。
调用第一个控制器会做什么:
http://localhost:8080/controller1/price
{ id: "id", 描述: "描述" }
调用第二个控制器会做什么:
http://localhost:8080/controller2/price
{ PriceId: "id", 描述: "描述" }
问候
@SpringBootApplication
public class EndpointsApplication {
public static void main(String[] args) {
SpringApplication.run(EndpointsApplication.class, args);
}
@Data // Lombok
@AllArgsConstructor
class Price {
String id;
String description;
}
@RestController
@RequestMapping(value = "/controller1")
class PriceController1 {
@GetMapping(value = "/price")
public …Run Code Online (Sandbox Code Playgroud) 我试图从 Spring RestController 返回一个 Observable,但没有成功。我的代码如下:
@RestController
public class HystrixCommentController {
@GetMapping(value = "/com1/{id}")
public Observable<Comment> getComment1(@PathVariable int id) {
return Observable.just(new Comment());
}
}
Run Code Online (Sandbox Code Playgroud)
在邮递员中运行请求时,我总是收到以下错误:
{
"timestamp": "2018-07-08T16:07:36.809+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No converter found for return value of type: class rx.internal.util.ScalarSynchronousObservable",
"path": "/com1/1"
}
Run Code Online (Sandbox Code Playgroud)
SpringBoot 2 不也像 Mono/Flux 一样支持 RestController 中的 rx.Observable 吗?
我需要手动将 Observable 转换为 Mono/Flux 吗?
问候
注意:spring-boot-starter-webflux 包含在 pom 中
我试过这个:
@RestController
public class HystrixCommentController {
@GetMapping(value = "/com1/{id}", produces = "application/json")
public …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 HystrixObservableCommand 与 Spring WebFlux WebClient 一起使用,我想知道是否有一个“干净”的方法可以将 Mono 转换为 rx.Observable。我的初始代码如下所示:
public Observable<Comment> getComment() {
return webClient.get()
.uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Comment.class)
// stuff missing here :(.
}
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法可以做到这一点吗?
问候
我目前正在学习和尝试不同的 Spring Boot Security OAuth2 包,但我对实际的配置属性名称感到非常困惑。我在互联网和多个 Spring 文档页面上发现了这些属性的不同命名方案。例如我发现
security.oauth2.resource.token-info-uri=xxx
security.oauth2.client.resource.tokenInfoUri
spring.security.oauth2.resource.token-info-uri=xxx
spring.security.oauth2.resourceserver ...
...
Run Code Online (Sandbox Code Playgroud)
我试图理解这一切,并想知道它们之间有什么区别。它们是否与版本相关、与包相关、是否有拼写错误、是否已弃用某些名称……?
问候
PS我目前使用的是Spring Boot 2.2.4