pom文件,一山不容二虎,下面两个依赖不能同时使用,因为这次我们要用到webflux,所以注释掉上面的web,否则,编译没错误,但网页显示不出来。
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-web</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
HelloHandle类
package com.example.demo;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
@Component
public class HelloHandle {
public Mono<ServerResponse> hello(ServerRequest request) {
//返回一个字符串 hello this is a spring boot webflux project!
return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromObject("hello this is a spring boot webflux project!"));
}
}
HelloRouter类
package com.example.demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.*;
//@Configuration启动容器+@Bean注册Bean
@Configuration
public class HelloRouter {
@Bean
public RouterFunction<ServerResponse> routeHello(HelloHandle helloHandle) {
//接收HelloHandle传来的字符串(显示在网页),更改路由
return RouterFunctions
.route(RequestPredicates.GET("/hello")
.and(RequestPredicates.accept(MediaType.APPLICATION_JSON)),helloHandle::hello);
}
}
运行后