1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

spring-boot之webflux简单入门 - 上

前言

从今天开始,我们开始学习spring-boot的另外一套web解决方案——webflux

webFluxspring5.0以后的版本中引入的,我们都知道,springmvc框架是基于servlet实现的,本质上他用的是传统的I/O模型,相比于传统的MVCWebFlux则是基于NIO(新IO,也叫非阻塞IO),所以在IO性能上会比传统的MVC性能要好一些。

下面是官方网站给出的对比:

下面是MVCwebFlux的架构图对比:

当然,现在我们的说法只能算是一种推理,因为我现在对webflux也知之甚少,不过根据我目前搜集到的资料来看,大家似乎并不认为webflux未来会成为一种趋势,大家诟病的缺点主要有以下几个:

  • 写法结构上和lambda表达式很像(响应式编程),所以在日常开发运维中,不利于问题排查,不便于调试(用过lambdas表达式的小伙伴也应该有此体会)
  • 写法上过于繁琐,相比于传统的MVC,过于臃肿,这一点我们等下可以对比看下
  • 打印日志、堆栈信息不方便,不利于后期运维

这些就是我目前所了解到的缺点,更多的可能还需要我们自己实际踩坑才能体会,下面我们就来通过一个简单的demo看下webflux的一些基础知识。

Webflux

创建项目

首先我们创建一个spring-boot项目,引入webflux的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

编写Handler组件

这里的handler就类似于我们之前mvc中的controller,也就是对外提供的接口。

我们可以在方法内部指定返回结果、响应类型、响应体等数据,这种写法和我们前几天写的security的配置很像,也和Netty代码中的写法很像,不过这也不奇怪,因为webFlux的底层就是基于Netty实现的。

@Component
public class HiHandler {
    public Mono<ServerResponse> sayHi(ServerRequest request) {
        return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON)
                .body(BodyInserters.fromValue("Hi , this is SpringWebFlux"));
    }
}

编写路由配置

路由配置和Handler是对应的,一个Handdler对应一个路由配置

@Configuration
public class RouteConfig {
    @Bean
    public RouterFunction<ServerResponse> routSayHi(HiHandler handler) {
        return RouterFunctions
                .route(RequestPredicates.GET("webflux/hi")
                        .and(RequestPredicates.accept(MediaType.ALL)), handler::sayHi);
    }
}

测试

写完以上代码后,我们启动项目,然后访问如下地址:

http://localhost:8999/webflux/hi

服务端口如果你没有修改的话,默认应该是8080。响应结果如下:

到这里你的第一个webflux接口就写好了。

传统MVC写法

对于上面这个接口,如果我们用传统的MVC写法的话,只需要一个controller接口即可:

@RestController
@RequestMapping("/webflux")
public class WebFluxController {

    @RequestMapping("/hi")
    public Object sayHi(String name) {
        return "hi, " + name;
    }
}

启动访问:

http://localhost:8999/webflux/hi?name=syske

需要注意的是,如果controllerwebFlux接口同时存在的话,webFlux会覆盖controller,也就是说webFlux的优先级要高于controller

MVC与WebFlux对比

先抛开性能差异,我们但从代码层面看,webflux要比MVC写更多代码,而且在写法上要复杂。所以,但从现在的情况来看,我觉得webflux是没有优势的,更多差异只能等我们后面深入了解之后才能清楚。

总结

今天我就只展示webFlux的简单写法,让各位小伙伴对webflux有个最基本的认识,认识到webflux和传统MVC的基本区别,当然这些都数据特别特别基础的知识。从明天开始我们就要开始稍微深入的探讨,然后逐步深入了解webflux的一些原理。

因为我现在也和各位小伙伴一样,也是在一边学一边分享,摸着石头过河,如果那里有说的不正确的地方,还请各位小伙伴予以指正。好了,今天就先到这里吧!

posted @ 2021-07-28 15:03  云中志  阅读(1010)  评论(0编辑  收藏  举报