`

SpringBoot-第十五章 高级篇幅之SpringBoot2.0响应式编程

 
阅读更多

 

<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());
    }
}

 

 

 

 

分享到:
评论

相关推荐

    springboot-rabbitmq.rar

    于rabbitmq的基本概念和相关的理论这里就不做过多介绍了,在之前的篇幅中有过相应的介绍,也可以查询一些资料详细了解一下rabbitmq的基础知识,下面要介绍的点主要包括两个方面, 1、rabbitmq的消息确认机制; 2、...

    《RxJava响应式编程》_李衍顺.zip 提取码: 2bsV75

    RsJava 响应式编程, 高清带目录. 响应式编程是一种基于异步数据流概念的编程模式。在开发手机 App、 Web App 时, 要想保证对用户 请求的实时响应,给用户带来流畅的体验,响应式编程是一个不错的选择, RxJava 则是...

    springboot集成jwt

    **SpringBoot集成JWT详解** SpringBoot是一个轻量级的Java框架,它简化了Spring应用程序的创建和部署。JWT(Json Web Token)则是一种用于在各方之间安全地传输信息的开放标准,广泛应用于身份验证和授权场景。在...

    新托福练习系列之一-写作之星V2.0

    写作之星V2.0能够实时计算考生输入的单词数量,使得考生能在撰写文章的过程中更好地控制篇幅,避免因字数过多或过少而影响分数。 其次,软件内嵌的倒计时功能是另一个亮点。模拟真实考试中的时间限制,考生可以在...

    某D课堂 - 新版本微服务SpringCloud+Docker教程-高级篇幅之链路追踪组件Zipkin+Sleuth实战

    spring高手之路21 Spring API 网关 073 某D课堂 - 新版本微服务SpringCloud+Docker教程 video code.zip 35.5MB 9-05 微服务相关项目改造...7-05 高级篇幅之链路追踪组件Zipkin+Sleuth实战~1.mp4 355.3MB 7-04 可视

    Office高级应用-第6章 高级排版—毕业论文快速排版.pptx

    在 Office 高级应用中,特别是针对长文档的排版,如毕业论文,掌握一定的技巧和方法至关重要。本章主要讲解了如何高效地对毕业论文进行排版,包括以下几个核心知识点: 1. **大纲级别**:大纲级别是Word中对段落...

    SpringBoot公开招聘系统外网站.zip

    SpringBoot是Java开发领域的一款轻量级框架,以其简洁的配置、快速的启动和强大的整合能力,成为构建微服务的首选工具之一。在这个“SpringBoot公开招聘系统外网站”项目中,我们可以深入探讨SpringBoot如何为公开...

    SpringBoot的招聘网站系统.zip

    SpringBoot的招聘网站系统

    SpringBoot项目模版

    SpringBoot项目模版

    基于SSM/Springboot的商城项目源码

    后端: SpringBoot Swagger Docker(docker需自己搭建docker环境) 前端: JSP 数据库:MySQL 技术语言 jdk 1.8 开发平台 Idea 2018 +win10 运行环境 Linux/Windows 毕业设计基于SSM/Springboot的商城项目,一个简单...

    C语言高级程序员编程指南

    第十五章 C++入门 第十六章 对象 第十七章 常见类函数 第十八章 用C++输入输出 基本上这本书对于初学者来说是比较好的,因为比较全面而且分得比较细又有相关方面的展开,每个点上都有相应的实例,这个对...

    软件创富密码:iPhone应用程序开发攻略之深入浅出Objective-C2.0分卷二

    iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理、软件的调式技巧...

    java-springboot招聘求职应聘简历系统微信小程序毕业论文.doc

    【摘要】 ...由于篇幅限制,完整的目录未在此处列出,但通常会包含引言、相关工作、系统设计、技术实现、测试与评估、结论和参考文献等部分,详细阐述整个项目的背景、理论基础、具体实现方法和成果评价。

    软件创富密码:iPhone应用程序开发攻略之深入浅出Objective-C2.0分卷一

    iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理、软件的调式技巧...

    springboot宠物医院管理系统

    这部分通常涉及到权限控制和数据验证,SpringBoot的AOP(面向切面编程)和Bean验证注解可以提供强大的支持。 在开发过程中,我们还需要关注系统的扩展性和可维护性。采用模块化设计,使得各模块之间松耦合,便于...

    Cascading Style Sheet 2.0 中文手册.chm

    ADO.chm ...限于篇幅,对于一些过于繁杂的相关内容,如动态样式属性(Dynamic Properties),滤镜(Filters),行为(Behaviors)请参阅我的其它相关著作。 本书中涉及到的所有HTML对象(Object,E

    [springboot项目源码]天气预报系统.zip

    【标题】:“SpringBoot项目源码 - 天气预报系统” 这个标题表明我们正在讨论一个基于SpringBoot框架开发的天气预报应用程序。SpringBoot是Java生态系统中的一个流行框架,它简化了创建独立、生产级别的Spring应用...

    SpringBoot博客后台管理系统

    《SpringBoot博客后台管理系统详解》 在现代互联网应用开发中,SpringBoot因其强大的功能和便捷的使用方式,已经成为Java开发者构建高效、稳定的Web应用程序的首选框架。本系统以"SpringBoot博客后台管理系统"为...

    基于SpringBoot实现商城项目源码包含数据库脚本文件

    【标题】基于SpringBoot实现的商城项目源码分析 在当今的互联网开发环境中,Spring Boot以其简洁、快速的特性成为了Java后端开发的首选框架。本项目标题提及的"基于SpringBoot实现商城项目源码",揭示了一个使用...

    【SpringBoot多模块项目】学生宿舍管理系统.zip

    项目采用SpringBoot +Maven多模块开发,数据库使用mysql,数据库脚本文件在dorm-web/src/main/resources/sql文件夹中。可以自己部署到IDEA开发工具中运行。

Global site tag (gtag.js) - Google Analytics