<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>
public class User { public User(String id,String name) { this.id=id; this.name=name; } private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
@Service public class UserService { private static final Map<String,User> userMap = new HashMap<String,User>(); static { userMap.put("1",new User("a1","kevin1")); userMap.put("2",new User("a2","kevin2")); userMap.put("3",new User("a3","kevin3")); userMap.put("4",new User("a4","kevin4")); userMap.put("5",new User("a5","kevin5")); } public Flux<User> list() { return Flux.fromIterable(userMap.values()).delayElements(Duration.ofSeconds(1)); } public Mono<User> findById(String id) { return Mono.justOrEmpty(userMap.get(id)); } public Mono<User> del(String id) { return Mono.justOrEmpty(userMap.remove(id)); } }
@RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/list",produces = MediaType.APPLICATION_STREAM_JSON_VALUE) public Flux<User> list() { return userService.list(); } @RequestMapping("/find") public Mono<User> findById(String id) { return userService.findById(id); } @RequestMapping("/del") public Mono<User> del(String id) { return userService.del(id); } }
public class WebClientTest { @Test public void test() { Flux<String> userFlux = WebClient.create().get(). uri("http://localhost:8080/user/list"). accept(MediaType.APPLICATION_STREAM_JSON).retrieve().bodyToFlux(String.class); System.out.println(userFlux.blockLast()); } @Test public void test1() { Mono<String> userMono = WebClient.create().get(). uri("http://localhost:8080/user/find?id={id}",1). accept(MediaType.APPLICATION_JSON).retrieve().bodyToMono(String.class); System.out.println(userMono.block()); } }
相关推荐
于rabbitmq的基本概念和相关的理论这里就不做过多介绍了,在之前的篇幅中有过相应的介绍,也可以查询一些资料详细了解一下rabbitmq的基础知识,下面要介绍的点主要包括两个方面, 1、rabbitmq的消息确认机制; 2、...
RsJava 响应式编程, 高清带目录. 响应式编程是一种基于异步数据流概念的编程模式。在开发手机 App、 Web App 时, 要想保证对用户 请求的实时响应,给用户带来流畅的体验,响应式编程是一个不错的选择, RxJava 则是...
SpringBoot的招聘网站系统
SpringBoot项目模版
后端: SpringBoot Swagger Docker(docker需自己搭建docker环境) 前端: JSP 数据库:MySQL 技术语言 jdk 1.8 开发平台 Idea 2018 +win10 运行环境 Linux/Windows 毕业设计基于SSM/Springboot的商城项目,一个简单...
第十五章 C++入门 第十六章 对象 第十七章 常见类函数 第十八章 用C++输入输出 基本上这本书对于初学者来说是比较好的,因为比较全面而且分得比较细又有相关方面的展开,每个点上都有相应的实例,这个对...
iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理、软件的调式技巧...
iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理、软件的调式技巧...
SpringBoot公开招聘系统外网站.zip
ADO.chm ...限于篇幅,对于一些过于繁杂的相关内容,如动态样式属性(Dynamic Properties),滤镜(Filters),行为(Behaviors)请参阅我的其它相关著作。 本书中涉及到的所有HTML对象(Object,E
基于SpringBoot实现商城项目源码包含数据库脚本文件
项目采用SpringBoot +Maven多模块开发,数据库使用mysql,数据库脚本文件在dorm-web/src/main/resources/sql文件夹中。可以自己部署到IDEA开发工具中运行。
本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的... 限于篇幅,对于一些过于繁杂的相关内容,如动态样式属性(Dynamic Properties),滤镜(Filters),行为(Behaviors)请参阅我的其它相关著作。
通常,每章涉及一个专题或是一类专题(例如Taskbar编程技术)。如果某个专题或某类专题跨越多章,通常靠前章节内容较简单,靠后章节需要熟悉一些编程技能才能理解。本书还要用到一些第三方库文件,如何使用这些库文件...
人力资源管理系统 专为人力资源外包企业打造的行业智能解决方案,本系统致力于解决简历利用率低,维护困难等行业痛点。我们的目标就是让简历得到充分利用,重复利用。核心功能包括角色(招聘专员,招聘组长,管理员...
springboot宠物医院管理系统
[springboot项目源码]天气预报系统
SpringBoot博客后台管理系统
25第7章 十进制记数法 30第8章 其他进位制记数法 36第9章 二进制数 48第10章 逻辑与开关 61第11章 逻辑门电路 73第12章 二进制加法机 94第13章 如何实现减法 103第14章 反馈与触发器 112第15章 字节与十六进制 131第...
本文是研究在ASP.NET 2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇。我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的DataSet的数据访问层(DAL),一个实施用户定义的业务...