一、定义业务逻辑处理方法:
package com.example.handler;
import com.example.domain.Teacher;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.function.ServerRequest;
import org.springframework.web.servlet.function.ServerResponse;
@Service
public class MyUserHandler {
public ServerResponse getUser(ServerRequest request){
String name=request.pathVariable("name");
String age=request.pathVariable("age");
Teacher teacher=new Teacher(name,Integer.parseInt(age));
return ServerResponse.ok().body(teacher);
}
}
二、定义路由函数,配置Http请求地址和业务逻辑方法之间的映射
package com.example.config;
import com.example.handler.MyUserHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.function.RequestPredicate;
import org.springframework.web.servlet.function.RouterFunction;
import org.springframework.web.servlet.function.ServerResponse;
import static org.springframework.web.servlet.function.RequestPredicates.accept;
import static org.springframework.web.servlet.function.RouterFunctions.route;
@Configuration(proxyBeanMethods = false)
public class MyRoutingConfiguration {
private static final RequestPredicate ACCEPT_JSON =
accept(MediaType.APPLICATION_JSON);
@Bean
public RouterFunction routerFunction(MyUserHandler userHandler) {
return route()
.GET("/myRoute/{name}/{age}", ACCEPT_JSON, userHandler::getUser)
//.GET("/{user}/customers", ACCEPT_JSON, userHandler::getUserCustomers)
//.DELETE("/{user}", ACCEPT_JSON, userHandler::deleteUser)
.build();
}
}
三、启动Spring Boot程序进行测试,结果如下:



