一、応答式プログラミングWebFlux紹介兼入門Demo
4701 ワード
(1)応答式Springの道術器(2)応答式Springの道術器(2)応答式Springの道術器(3)lamdaと関数式——応答式Springの道術器(4)Reactor 3は、応答式Springの術器(5)Spring WebFluxは迅速に手に入ります.応答式Springの道術器(総綱目)応答式Springの道術器(Spring WebFlux教程) _;はこれらの資料を順番に見て、基本的に入門します.ここではそんなに多くの理論を引っ張らないで、直接Demoで入門します.
(一)Demo目的 以下、関数的に二つのEntdpointを開発します.
(二)WebFluxの関数的開発基本プロセス 1.一括保存処理時間を作成するHandler類 ここのHandler類はSpring MVCのController層の中の方法体に相当します.
(一)Demo目的 以下、関数的に二つのEntdpointを開発します.
/time
は現在の時間に戻ります. は現在の日付を返します.(二)WebFluxの関数的開発基本プロセス 1.一括保存処理時間を作成するHandler類 ここのHandler類はSpring MVCのController層の中の方法体に相当します.
/**
* ok()
*/
import static org.springframework.web.reactive.function.server.ServerResponse.ok;
/**
* @author
* @date 2018/6/28 16:38
*/
@Component
public class TimeHandler {
/**
* , HttpServletRequest HttpServletResponse, ServerRequest ServerResponse
* @param request
* @param response
* @return Mono Flux “ ” , String/List....,
* Mono Flux 。 ,Mono ,Flux 。 id User,
* User, Mono; User, ,
* Flux。 , ;
* ServerRequest request, ServerResponse response
*/
public Mono getTime(ServerRequest request){
//
return ok().contentType(MediaType.TEXT_PLAIN).body(
Mono.just("Now is " + new SimpleDateFormat("HH-mm-ss").format(new Date())), String.class);
}
public Mono getDate(ServerRequest request){
return ok().contentType(MediaType.TEXT_PLAIN).body(
Mono.just("Now is " + new SimpleDateFormat("yyyy-MM-dd").format(new Date())), String.class);
}
_; 2.Spring容器にRouterFunction ここのHandler類はSpringMVCにおけるController層におけるマッピング経路に相当する(@Request Mapping)/**
* “router”
*/
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
/**
* @author
* @date 2018/6/28 16:55
*/
@Configuration
public class RouterConfig {
private TimeHandler timeHandler;
@Autowired
public RouterConfig(TimeHandler timeHandler) {
this.timeHandler = timeHandler;
}
/**
*
*/
@Bean
public RouterFunction timeRouter(){
/**
* , : , :
* lambda :request -> timeHandler.getTime(request), ServerRequest ,
* TimeHandler “ServerRequest”
*/
return route(GET("/time"), timeHandler::getTime)
.andRoute(GET("/date"), timeHandler::getDate);
}
}