萱草|SpringBoot 2 webflux 牛刀小试
?spring webflux介绍Spring WebFlux 是一个异步非阻塞式的 Web 框架 ,可以运行在支持 Servlet 3.1 非阻塞IO的Servlet 容器上 , 或者其他异步运行环境 , 如 Netty、Undertow 。 它可以充分利用多核 CPU 资源去处理大量的并发请求 , 非常适合低延迟、高吞吐量的应用场景 。
Spring WebFlux
简单的说就四点:异步非阻塞、 响应式(reactive)函数编程、不再限制于Servlet容器、 响应式(reactive)访问处理数据 。 废话有点多了 , 言归正传 , 今天我们将测试下在spring boot 2.x下测试webflux实现一个简单的Demo来实现Mysql数据库的访问并返回JSON数据 。
框架搭建我们使用idea搭建一个初步的框架 , 新建工程->Spring Initializr , 输入groupId、artifactId等信息后 , 在依赖界面我们勾选Spring Reactive Web、Spring Data R2DBC , 点击下一步直到工程建立完毕 。 (Postgres , Microsoft SQL Server , MySQL , H2和Google Spanner)都有R2DBC驱动 , 很遗憾Mysql暂时还没有 , 本示例中我们采用第三方的r2dbc-mysql(dev.miku) 。 POM文件依赖项目配置如下:
代码编写首先我们在spring boot配置文件内增加R2DBC数据库的相关配置
spring.r2dbc.url= r2dbcs:mysql://127.0.0.1:3306/iotspring.r2dbc.username=rootspring.r2dbc.password=123456定义数据库访问接口 , 继承ReactiveCrudRepository , 在接口内我们可以通@Modifying @Query等注解自定义自己需要的方法
public interface SysUserRepository extends ReactiveCrudRepository {}实现业务层相关方法 , 返回单个指定的用户和所有用户列表数据
@Servicepublic class SysUserServiceImpl implements SysUserService {@Autowiredprivate SysUserSortingRepository sysUserSortingRepository;@Overridepublic Mono findUserById(String userId) {return sysUserSortingRepository.findById(userId);}@Overridepublic Flux findAll() {return sysUserSortingRepository.findAll();}}定义控制层 , 暴露接口展示相关数据
@RestController@RequestMapping("/user")public class SysUserController {@Autowiredprivate SysUserService sysUserService;/*** 返回指定用户* @param id 用户id* @return Mono*/@GetMapping("/{id}")public Mono findUserById(@PathVariable String id) {return sysUserService.findUserById(id);}/*** 返回所有用户* @return Flux*/@GetMapping("/all")public Flux findUserById() {return sysUserService.findAll();}}我们启动服务 , 看下运行效果 , 我们可以看到服务运行在Netty内 , 不再是默认的tomact
spring boot starting
我们看到端口默认为8080 , 我们访问下控制器内定义的/user/all , /user/id 均成功返回了JSON
获取所有用户
推荐阅读
- 萱草|轻松制作智能化AR体验,Unity MARS Simulation系统原理介绍
- 一味宠爱|Springboot整合K8s读取ConfigMap刷新配置
- 萱草|手机的全面屏时代真的来了吗?
- 小熊科技|从零学ELK系列(十):SpringBoot接入ELK升级版
- 萱草|性能做足远远不够!友商新机将彻底变革外观,就问你满意否?
- 萱草|涉嫌传销,社交电商进入优胜劣汰后半场,千团倒闭
- 萱草|千团倒闭,涉嫌传销,社交电商进入"优胜劣汰"后半场
- 萱草|华为另起灶炉,荣耀亲选上线“解压”神器,网友:比手机还火
- 萱草|微软发布Win 10英特尔微代码/兼容性更新
- 萱草|真我V3被当成小米产品同时价格受质疑,徐起吐槽:媒体号太不专业
