标签: spring-webflux

OpenApi - 需要一个类型为“org.springdoc.webmvc.ui.SwaggerIndexTransformer”的 bean,但无法找到

我正在使用功能控制器将 Swagger 添加到我的 Spring Webflux 服务中。首先我收到这个错误:

描述:无法注册在类路径资源 [org/springdoc/webflux/ui/SwaggerConfig.class] 中定义的 bean“swaggerWelcome”。具有该名称的 bean 已在类路径资源 [org/springdoc/webmvc/ui/SwaggerConfig.class] 中定义,并且覆盖被禁用。

行动:

考虑重命名其中一个 bean 或通过设置 spring.main.allow-bean-definition-overriding=true 来启用覆盖

所以我将 spring.main.allow-bean-definition-overriding=true 添加到我的 application.properties 文件中。

现在我收到这个错误:

描述:

org.springdoc.webmvc.ui.SwaggerConfig 中方法 swaggerWebMvcConfigurer 的参数 1 需要一个类型为“org.springdoc.webmvc.ui.SwaggerIndexTransformer”的 bean,但无法找到。

行动:

考虑在配置中定义“org.springdoc.webmvc.ui.SwaggerIndexTransformer”类型的 bean。

Pom 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.company/groupId>
    <artifactId>service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <!-- For all mvc and web functions -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency> …
Run Code Online (Sandbox Code Playgroud)

api-doc openapi spring-webflux springdoc-openapi-ui

0
推荐指数
1
解决办法
1万
查看次数

Spring WebFlux - 如何使用 WebClient 将响应打印为字符串而不是对象

我有一个如下所示的 Mono:

    private void getNodeDetail() {
        Mono<String> mono = webClient.get()
                .uri("/alfresco/api/-default-/public/alfresco/versions/1/nodes/f37b52a8-de40-414b-b64d-a958137e89e2")
                .retrieve().bodyToMono(String.class);

        System.out.println(mono.subscribe());
        System.out.println(mono.block());
    }
Run Code Online (Sandbox Code Playgroud)

问题:第一个 sysout 向我展示了reactor.core.publisher.LambdaSubscriber@77114efe使用 block() 时的情况,它向我展示了我需要的内容(json 字符串)。但我想使用 Aysnc 方法。那么,如上所述,这是否意味着我的目标系统(在本例中为 Alfresco)不支持异步调用?subscribe()如果不是这种情况,如何使用,就像 一样以字符串格式在控制台上打印响应block()

spring alfresco spring-boot project-reactor spring-webflux

0
推荐指数
1
解决办法
2897
查看次数

将 List&lt;String&gt; 转换为 Mono&lt;List&lt;String&lt;&gt;&gt; Java WebFlux

我正在尝试使用 web WebFlux 将字符串列表转换为 Java 中字符串列表的 Mono,也许很简单,但我找不到解决方案。

这是清单

List<String> lstString = new ArrayList<>();
lstString.add("Hello");
lstString.add("How");
lstString.add("are");
lstString.add("you?");


//Expected result
Mono<List<String>> lstMonoList =lstString.stream.map()....
Run Code Online (Sandbox Code Playgroud)

我尝试使用流、平面地图和地图方法,但我经常得到流()o列表的响应

有人可以帮助我吗?,提前致谢

java reactive-programming spring-webflux

0
推荐指数
1
解决办法
3981
查看次数

Mono.defualtEmpty() 与 Mono.switchIfEmpty()

当上游发出 nullValue 时,我们可以使用 'Mono.defualtIfEmpty()' 或 'Mono.switchIfEmpty()' 来替换 null 值。

switchIfEmpty()评价上游价值急切。因此我们使用 Mono.defer() 进行惰性求值。

  1. 'Mono.defualtIfEmpty()' 也是急于求值吗?像 switchIfEmpty() 一样?

  2. 如何更改 Mono.defualtIfEmpty() 来进行惰性评估?

reactive-programming project-reactor reactive spring-webflux

0
推荐指数
1
解决办法
4765
查看次数

Spring boot WebClient 真的是异步的吗?

WebClient 是一个响应式客户端,它提供了 RestTemplate 的替代方案。据说是异步的。

但我怀疑以下代码:

 WebClient.create()
            .method(HttpMethod.GET)
            .uri("http://localhost:8080/testApi")
            .retrieve()
            .bodyToMono(String.class)
Run Code Online (Sandbox Code Playgroud)

它什么都不做。没有发送任何 http 请求。好像没有触发。除非我通过 add 触发它.block()。但它使事情不是“异步”。

另外,我所知道的是使用.subscribe()它使事情看起来异步。

但是 WebClient 是为此设计的吗?使用 WebClient 的最佳实践是什么?

java asynchronous spring-boot spring-webflux

-2
推荐指数
1
解决办法
4621
查看次数