不存在类型变量 T 的实例,因此 Flux<T> 确认为 Mono<?延长 R)
No instance(s) of type variable(s) T exist so that Flux<T> confirms to Mono<? extend R)
我正在实施 Spring webflux 演示应用程序,并且已经编写了我的演示应用程序
package com.abcplusd.application;
import com.abcplusd.domain.Event;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import java.util.Collections;
import java.util.Date;
import java.util.stream.Stream;
@SpringBootApplication
public class ReactiveClientApplication {
@Bean WebClient webClient() {
return WebClient.create("http://localhost:8080");
}
@Bean CommandLineRunner demo(WebClient webClient) {
return args -> {
webClient.get()
.uri("/events")
.accept(MediaType.TEXT_EVENT_STREAM)
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToFlux(Event.class))
.subscribe(System.out::println);
};
}
public static void main(String[] args) {
new SpringApplicationBuilder(ReactiveClientApplication.class)
.properties(Collections.singletonMap("server.port", "8081"))
.run(args);
}
}
显示如下错误
Error:(29, 41) java: incompatible types: no instance(s) of type variable(s) T exist so that reactor.core.publisher.Flux<T> conforms to reactor.core.publisher.Mono<? extends R>
以上错误在这一行:
.flatMap(clientResponse -> clientResponse.bodyToFlux(Event.class)))
事件Class
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@Data
@AllArgsConstructor
public class Event {
private long id;
private Date when;
}
谁能帮我解决这个错误?
在我对代码进行这些更改后,它对我有效
.flatMap(clientResponse -> clientResponse.bodyToFlux(Event.class)))
到
.flatMapMany(clientResponse -> clientResponse.bodyToFlux(Event.class))
和
@NoArgsConstructor annotation in Event.Class
如下:
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Event {
private long id;
private Date when;
}
flatMapMany 而不是 flatMap 有效。
然而,当您将 属性 spring.main.web_environment=false 添加到 application.properties 文件时,webClient 根本不起作用。
我正在实施 Spring webflux 演示应用程序,并且已经编写了我的演示应用程序
package com.abcplusd.application;
import com.abcplusd.domain.Event;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import java.util.Collections;
import java.util.Date;
import java.util.stream.Stream;
@SpringBootApplication
public class ReactiveClientApplication {
@Bean WebClient webClient() {
return WebClient.create("http://localhost:8080");
}
@Bean CommandLineRunner demo(WebClient webClient) {
return args -> {
webClient.get()
.uri("/events")
.accept(MediaType.TEXT_EVENT_STREAM)
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToFlux(Event.class))
.subscribe(System.out::println);
};
}
public static void main(String[] args) {
new SpringApplicationBuilder(ReactiveClientApplication.class)
.properties(Collections.singletonMap("server.port", "8081"))
.run(args);
}
}
显示如下错误
Error:(29, 41) java: incompatible types: no instance(s) of type variable(s) T exist so that reactor.core.publisher.Flux<T> conforms to reactor.core.publisher.Mono<? extends R>
以上错误在这一行:
.flatMap(clientResponse -> clientResponse.bodyToFlux(Event.class)))
事件Class
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@Data
@AllArgsConstructor
public class Event {
private long id;
private Date when;
}
谁能帮我解决这个错误?
在我对代码进行这些更改后,它对我有效
.flatMap(clientResponse -> clientResponse.bodyToFlux(Event.class)))
到
.flatMapMany(clientResponse -> clientResponse.bodyToFlux(Event.class))
和
@NoArgsConstructor annotation in Event.Class
如下:
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Event {
private long id;
private Date when;
}
flatMapMany 而不是 flatMap 有效。
然而,当您将 属性 spring.main.web_environment=false 添加到 application.properties 文件时,webClient 根本不起作用。