Spring boot 从反应式spring启动应用程序调用非反应式遗留服务?

Spring boot 从反应式spring启动应用程序调用非反应式遗留服务?,spring-boot,spring-webflux,reactor,Spring Boot,Spring Webflux,Reactor,我正在大量使用基于webflux的spring boot应用程序。 我面临的问题是,我必须调用一个服务,这是一个传统的spring boot应用程序,不是被动的 下面是一个与所述遗留系统的理念接近的端点示例: @RequestMapping(value = "/people/**", method = RequestMethod.GET) public ResponseEntity<InputStreamResource> getPerson(HttpServle

我正在大量使用基于webflux的spring boot应用程序。 我面临的问题是,我必须调用一个服务,这是一个传统的spring boot应用程序,不是被动的

下面是一个与所述遗留系统的理念接近的端点示例:

@RequestMapping(value = "/people/**", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> getPerson(HttpServletRequest request) {
    String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
    String key = new AntPathMatcher().extractPathWithinPattern(pattern, request.getRequestURI());
    
        return personService.getPersonByKey(key);
    }


@RequestMapping(value=“/people/**”,method=RequestMethod.GET)
公共响应权限getPerson(HttpServletRequest请求){
String pattern=(String)request.getAttribute(HandlerMapping.BEST_MATCHING_pattern_属性);
String key=new AntPathMatcher().extractPathWithinPattern(模式,request.getRequestURI());
返回personService.getPersonByKey(key);
}
我知道我不能用这个来实现真正的反应性善,有没有一个不阻塞和阻塞的快乐媒介我可以在这里实现


感谢当您使用
WebClient
从Spring WebFlux应用程序调用服务时,它将以反应式非阻塞方式工作。这意味着您可以在应用程序上实现真正的反应性优点。在上游服务返回响应之前,线程不会被阻塞

下面是使用WebClient调用服务的示例代码:

WebClient webClient = WebClient.create("http://localhost:8080");

Mono<Person> result = webClient.get()
    .uri("/people/{id}")
    .retrieve()
    .bodyToMono(Person.class);
WebClient-WebClient=WebClient.create(“http://localhost:8080");
Mono result=webClient.get()
.uri(“/people/{id}”)
.retrieve()
.bodyToMono(个人、班级);

当您使用
WebClient
从Spring WebFlux应用程序调用服务时,它将以反应式非阻塞方式工作。这意味着您可以在应用程序上实现真正的反应性优点。在上游服务返回响应之前,线程不会被阻塞

下面是使用WebClient调用服务的示例代码:

WebClient webClient = WebClient.create("http://localhost:8080");

Mono<Person> result = webClient.get()
    .uri("/people/{id}")
    .retrieve()
    .bodyToMono(Person.class);
WebClient-WebClient=WebClient.create(“http://localhost:8080");
Mono result=webClient.get()
.uri(“/people/{id}”)
.retrieve()
.bodyToMono(个人、班级);

如果您在WebFlux应用程序中使用WebClient调用传统的spring boot应用程序,您应该不会有问题。WebClient以一种不阻塞的方式实现,在调用传统的SpringMVC应用程序时也是如此。阅读更多信息:如果您在WebFlux应用程序中使用WebClient调用传统的spring boot应用程序,您应该不会有问题。WebClient以一种不阻塞的方式实现,在调用传统的SpringMVC应用程序时也是如此。阅读更多: