WebFlux
泛泛之素
君子不器
展开
-
Spring WebFlux + React搭建后台管理系统(13):微服务 项目制作成docker image
1.微服务现在是微服务(Microservices )大行其道的时代,微服务将一个大的服务拆分成多个独立的服务,通过网络在独立的服务之间进行沟通,这样做可以使各个独立服务之间松耦合,就像变形金刚每个是独立的,但是可以合体成为一个超级战士。微服务的优点还是很多的:每个服务模块之间低耦合,开发人员可以专心完成自己的任务微服务能使用不同的语言开发。不同的服务通过注册中心整合可以提高容错性能,通过熔断器处理,如果问题直接熔断,不会导致雪崩效应每个服务可以通过需求配置到合适硬件的服务器上,深度学习的服务原创 2020-09-16 17:28:01 · 452 阅读 · 0 评论 -
Spring WebFlux + React搭建后台管理系统(12):初次运行初始化表格和数据
这里有一个使用场景:我希望通过docker-compose直接部署我的项目,运行的时候拉下来的mysql数据库容器中是空的,而且r2dbc没有初始化数据库这里功能,需要通过sql文件进行配置,这里有两个选项:通过mysql容器进行配置,这样不好控制,配置起来比较麻烦通过spring服务端配置,读取sql文件通过jdbc进行配置这里又有一个问题就是,我们在配置文件中配置的mysql的路径是有数据库的,如果使用注入的DatabaseClient的话是不行的,因为数据库还没有创建,直接使用会提示找不到x原创 2020-09-16 13:01:53 · 353 阅读 · 0 评论 -
Spring WebFlux + React搭建后台管理系统(10):配合Redis进行鉴权
如果是网关等服务,可以将路由及每个路由的权限缓存到redis数据库中,用户访问,在网关进行鉴权:token比对redis缓存的token,不存在返回token进行jwt解析,获取roles通过api的path和访问模式在redis数据库中获取该接口通行的rolestoken中的roles和api对应的roles有相交说明有权限,否则返回roles同时通过ReactiveSecurityContextHolder进行设置1. 启动时api信息写入redis通过PostConstruct在启原创 2020-09-02 15:25:38 · 1052 阅读 · 1 评论 -
Spring WebFlux + React搭建后台管理系统(6): 使用faker获取测试数据
由于测试没有数据,一个一个写的话太麻烦了,这是我们可以使用faker伪造测试数据,之前用写爬虫的时候经常用来生成user-agent,查了一些java也有类似的库:implementation 'com.github.javafaker:javafaker:0.17.2'通过爬虫获取图像地址通过faker编写生成SysUser类的对象通过编写一个faker数据的controller,get传入个数fake相应的用户数据1. 获取头像地址随便找了个头像网站,编写了一个爬虫获取了一些头像地原创 2020-08-31 20:38:59 · 390 阅读 · 0 评论 -
Spring WebFlux + React搭建后台管理系统(2): 主要业务逻辑实现
上一篇简单实现了数据库表的生成以及生成POJO,这里主要介绍后台服务中实现的接口以及如何通过使用webflux实现一些复杂的逻辑,以及登录鉴权等内容。业务接口如下为整理的实现的借口汇总,应为是RESTful接口,一个path会对应多个功能:UrlHttpMethod描述**/api/auth/logout **get登出**/api/auth/login **post登入**/api/user **get通过用户名获取数据用户**/api/us原创 2020-08-27 21:40:01 · 1190 阅读 · 0 评论 -
Spring WebFlux + React搭建后台管理系统(1):创建数据表及生成POJOs
搞了一个月的响应式,开个新坑,本系列简单搭建一个后台管理系统,主要功能如下:jwt 登录+鉴权实现用户管理页面,用户查询数据表,增删改表单实现api管理页面,api权限管理的增添修改mysql存储用户信息redis用于缓存权限路由映射,记录token使用技术栈:后端使用spring webflux + mysql + redis + jwt实现 RESTful api + RSocket?,前端使用reactjs + umijs + antd + material-ui?。spring原创 2020-08-26 12:30:26 · 859 阅读 · 0 评论 -
Spring WebFlux (9): 配合redis使用
redis是著名的缓存数据库,同时也是Key-Value数据库,使用redis可以做许多工作,共享session,实现一个小的队列,最主要还用来作为缓存。在webflux中使用redis用于缓存有些蛋疼,需要自己配置,而且返回的都是publisher,本篇也不着重实现这个,本篇只是在Spring WebFlux (7): Springboot Security+jwt登录鉴权的基础上,添加一些redis的使用:登录的时候将token记录在redis数据库中key为token_set的一个set中访原创 2020-08-20 18:25:45 · 2436 阅读 · 0 评论 -
Spring WebFlux (8): 处理跨域请求cors设置
前后端分离访问api会出现跨域资源共享(CORS)问题,webflux框架处理cors主要四种方法:处理方法设置注释@CrossOrigincontroller上设置@CrossOrigin设置cors的configuration文件设置cors的Webfilter前两个为局部设置,后两个为全局设置1. 方法标注@CrossOrigin在需要开放资源的方法上面注释CrossOrigin即可:@CrossOrigin注释的设置具有如下的默认配置:允许所有来源允许所有请求头允许所有原创 2020-08-19 15:30:18 · 4009 阅读 · 0 评论 -
Spring WebFlux (7): Springboot Security+jwt登录鉴权
在Spring WebFlux (3): mysql+Springboot Security实现登录鉴权的基础上实现token登录的逻辑刚上手确实很复杂,挺难啃的,而且实现方法也不唯一,看过很多博客实现的方法基本都不一样,简单说一下我的方法:首先设置一个WebFilter,主要两个功能:登录和注册时是没有token的,这两个功能的路由放行其他请求检查token,是否有token,token是否合法,讲处理的token放入上下文中然后就是实现ServerSecurityContextRe原创 2020-08-17 21:34:59 · 8816 阅读 · 21 评论 -
Spring WebFlux (6): RSocket 服务实现
RSocket官网:https://rsocket.io/RSocket是一种二进制协议,可用于字节流传输,例如TCP,WebSockets和Aeron。提供了四中交互模式:request/response (stream of 1) 请求/响应(单响应)大多数请求就是这种模式,仅1个响应的流,是在单个连接上多路复用的异步消息request/stream (finite stream of many) 可以将其视为“集合”或“列表”响应,但不是将所有数据作为单个响应返回,而是按顺序流回每个元素原创 2020-08-13 16:36:21 · 1907 阅读 · 0 评论 -
Spring WebFlux (5): WebClient使用
可以使用WebFlux的WebClient类很方便的对网络请求进行代理处理操作,我想Spring Cloud Gateway中主要用的就是WebClient进行操作,这里简单介绍一下WebClient的用法,想要深度学习的话,看一下Spring Cloud Gateway源码准没错一些用法流数据首先创建一个server端,用于产生一些网络服务:Employee为员工类EmployeeFaker为通过javafaker包生成的一些数据EmployeeController生成一些服务,其中getE原创 2020-08-13 13:20:45 · 3666 阅读 · 1 评论 -
Spring WebFlux (4): 使用springdoc openapi测试登录security设置
首先设置在设置全局filter时,将swagger相关的网址授权:登录设置:1. swagger全局登录设置,在controller文件中进行设置:设置之后可以在标红处进行登录:登录之后便可测试api:2. 对某个路由进行设置设置之后,可以在红框处进行登录:...原创 2020-08-12 18:19:32 · 1976 阅读 · 0 评论 -
Spring WebFlux (3): mysql+Springboot Security实现登录鉴权
Security主要有两个功能:登录鉴权Security通过一个user相关类存储用户信息,实现UserDetails接口功能:看一下Security自带的User类, 主要变量:password:密码username: 账户名authorities: 访问权限accountNonExpired:账户没有过期isAccountNonLocked:账户没被锁定 (是否冻结)isCredentialsNonExpired:密码没有过期isEnabled:账户是否可用(是否被删除)原创 2020-08-12 12:20:46 · 3462 阅读 · 0 评论 -
Spring WebFlux (2): mongodb+springdoc 创建 RESTful api
相较于mysql数据库,mongodb是比较早支持响应式等异步读写的nosql数据库,跟mysql一样,可以使用ReactiveCrudRepository快速编写实现crud,而且各层内容都基本相同。整个过程跟上一篇使用mysql相比,只有model使用表不同和配置数据库链接不同之外基本一样,当然mongodb和mysql这两种数据库使用的业务场景不同,mongodb多用来作为文章等的存储数据库,而mysql多用来存储结构性数据。一个示例:使用docker-compose启动mongodb数据库:v原创 2020-08-11 11:51:19 · 989 阅读 · 0 评论 -
Spring WebFlux (1): r2dbc+mysql+springdoc 创建 RESTful api
随着响应式编程在网络编程中使用越发的普及,mysql等一系列的关系型数据库也在r2dbc等包的帮助下支持响应式。虽然响应式跟原来的sevlet的写法区别比较大,但是spring尽量保持原来的风格,编写control层和service层的方法跟原来基本相同,略有区别就是controller返回的Mono或是Flux。特别是对crud的支持,跟原来的jpa基本相同。例子:1、创建table在mysql数据库中创建一个命名为mydb的数据库,然后创建一个命名为employee的表用于测试, 字段内容如下:原创 2020-08-10 18:08:38 · 2219 阅读 · 0 评论