SpringBoot 2 webflux 牛刀小试
?springwebflux介绍SpringWebFlux是一个异步非阻塞式的Web框架 , 可以运行在支持Servlet3.1非阻塞IO的Servlet容器上 , 或者其他异步运行环境 , 如Netty、Undertow 。 它可以充分利用多核CPU资源去处理大量的并发请求 , 非常适合低延迟、高吞吐量的应用场景 。
框架搭建【SpringBoot 2 webflux 牛刀小试】我们使用idea搭建一个初步的框架 , 新建工程->SpringInitializr , 输入groupId、artifactId等信息后 , 在依赖界面我们勾选SpringReactiveWeb、SpringDataR2DBC , 点击下一步直到工程建立完毕 。 (Postgres , MicrosoftSQLServer , MySQL , H2和GoogleSpanner)都有R2DBC驱动 , 很遗憾Mysql暂时还没有 , 本示例中我们采用第三方的r2dbc-mysql(dev.miku) 。 POM文件依赖项目配置如下:
org.springframework.bootspring-boot-starter-data-r2dbcio.r2dbcr2dbc-pooldev.mikur2dbc-mysqlorg.springframework.bootspring-boot-starter-webflux代码编写首先我们在springboot配置文件内增加R2DBC数据库的相关配置
spring.r2dbc.url=r2dbcs:mysql://127.0.0.1:3306/iotspring.r2dbc.username=rootspring.r2dbc.password=123456定义数据库访问接口 , 继承ReactiveCrudRepository , 在接口内我们可以通@Modifying@Query等注解自定义自己需要的方法
publicinterfaceSysUserRepositoryextendsReactiveCrudRepository{}实现业务层相关方法 , 返回单个指定的用户和所有用户列表数据
@ServicepublicclassSysUserServiceImplimplementsSysUserService{@AutowiredprivateSysUserSortingRepositorysysUserSortingRepository;@OverridepublicMonofindUserById(StringuserId){returnsysUserSortingRepository.findById(userId);}@OverridepublicFluxfindAll(){returnsysUserSortingRepository.findAll();}}定义控制层 , 暴露接口展示相关数据
@RestController@RequestMapping("/user")publicclassSysUserController{@AutowiredprivateSysUserServicesysUserService;/***返回指定用户*@paramid用户id*@returnMono*/@GetMapping("/{id}")publicMonofindUserById(@PathVariableStringid){returnsysUserService.findUserById(id);}/***返回所有用户*@returnFlux*/@GetMapping("/all")publicFluxfindUserById(){returnsysUserService.findAll();}}我们启动服务 , 看下运行效果 , 我们可以看到服务运行在Netty内 , 不再是默认的tomact
推荐阅读
- SpringBoot数据库配置源码解析:自动配置内部实现解析
- |基于SpringBoot打造完整开源J2EE系统(无商业限制)源码分享
- spring|阿里内部超火的SpringBoot文档,理论与实战双管齐下
- 从零学ELK系列(十):SpringBoot接入ELK升级版
- 中国电信|爱了爱了!SpringBoot+Netty分布式即时通讯系统,附源码!
- 永旺首家生鲜便利店羊城牛刀小试
- 3种Springboot全局时间格式化方式,提高开发效率利器
- 显卡|java新手教程: springboot集成mybatis-plus上篇的学习
- spring|京东二面上来就问我springboot?还好我早有准备
- 武汉课工场Java培训:SpringBoot实现国际化开发
