范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringWebFlux使用函数式编程之FilteringHandlerFunctions

  环境:Springboot2.4.12
  本篇主要内容: RouterFunction中使用过滤器 URL处理组件
  请先阅读: 《Spring WebFlux使用函数式编程之HandlerFunction(1)》《Spring WebFlux使用函数式编程之RouterFunction(2)》概述
  你可以通过在路由函数构建器上使用before 、after 或filter 方法来筛选处理程序函数。通过使用注释,你可以通过使用@ControllerAdvice 、ServletFilter 或两者都可以实现类似的功能。过滤器将应用于构建器构建的所有路由。这意味着在嵌套路由中定义的过滤器不适用于"顶级"路由。例如,考虑下面的例子:RouterFunction route = route()     .path("/person", b1 -> b1         .nest(accept(APPLICATION_JSON), b2 -> b2             .GET("/{id}", handler::getPerson)             .GET("", handler::listPeople)             .before(request -> ServerRequest.from(request) // 1                 .header("X-RequestHeader", "Value")                 .build()))         .POST("/person", handler::createPerson))     .after((request, response) -> logResponse(response)) // 2     .build();添加自定义请求头的before 过滤器只应用于两个GET路由。记录响应的after 过滤器应用于所有路由,包括嵌套路由。
  路由器构建器上的filter方法接受HandlerFilterFunction :一个接受ServerRequest 和HandlerFunction 并返回ServerResponse 的函数。处理程序函数参数表示链中的下一个元素。这通常是路由到的处理程序,但如果应用了多个过滤器,它也可以是另一个过滤器。完整示例
  处理程序句柄@Component public class PersonHandler {   public ServerResponse queryPerson(ServerRequest request) throws Exception {     System.out.println(request.headers().header("x-pack")) ;     return ok().body(new Person(Integer.valueOf(request.pathVariable("id")), "中国")) ;   } 	   private Errors validate(Person person) {     Errors errors = new BeanPropertyBindingResult(person, "person");     validator.validate(person, errors);     if (errors.hasErrors()) {       return errors ;      }     return null ;   } }
  路由配置@Configuration public class PersonHandlerConfiguration { 	   @Resource   private PersonHandler ph ; 	   @Bean   public RouterFunction nestPerson2() {     return route()       .path("/persons2", b1 -> b1         .nest(accept(MediaType.APPLICATION_JSON), b2 -> b2           .GET("/{id}", accept(MediaType.APPLICATION_JSON), ph::queryPerson)           .before(request -> ServerRequest.from(request).header("x-pack", "123123").build()))         .POST("/save", ph::save))       .after((request, response) -> {         System.out.println("after execution..." + response.statusCode());         return response ;       })       .filter((request, next) -> {         if (request.pathVariable("id").equals("100")) {           return ServerResponse.ok().body("参数错误") ;         } else {           return next.handle(request) ;         }       })       .build();   } 	 }
  POJOpublic class Person {   private Integer id ;   @NotEmpty(message = "姓名必须填写")   private String name ; }URL处理组件
  URL组件可以在Spring MVC and Spring WebFlux中都可以使用。
  UriComponentsBuilder 帮助从带有变量的URI模板构建URI,如下例所示:UriComponents uriComponents = UriComponentsBuilder   .fromUriString("https://pack.com/lovers/{lover}")  // 1   .queryParam("q", "{q}")  // 2   .encode()  // 3   .build();  // 4 URI uri = uriComponents.expand("lover", "hcw").toUri();  // 5使用URI模板的静态工厂方法添加或替换URI组件请求对URI模板和URI变量进行编码建立一个UriComponents展开变量并获得URI
  以上代码运行结果:https://pack.com/lovers/lover?q=hcw
  上面的例子可以合并为一个链,并使用buildAndExpand 进行缩短,如下面的例子所示:URI uri = UriComponentsBuilder   .fromUriString("https://pack.com/lovers/{lover}")   .queryParam("q", "{q}")   .encode()   .buildAndExpand("lover", "hcw")   .toUri();
  你可以通过直接进入URI(这意味着编码)来进一步缩短它,如下面的例子所示:URI uri = UriComponentsBuilder   .fromUriString("https://pack.com/lovers/{lover}")   .queryParam("q", "{q}")   .build("lover", "hcw");
  你可以使用完整的URI模板进一步缩短它,如下例所示:URI uri = UriComponentsBuilder   .fromUriString("https://pack.com/lovers/{lover}")   .build("lover", "hcw");
  完毕!!!
  Spring容器这些扩展点你都清楚了吗?
  Spring事务实现原理源码分析
  Spring中的@Configuration注解你真的了解吗?
  SpringBoot对Spring MVC都做了哪些事?(一)
  SpringBoot对Spring MVC都做了哪些事?(二)
  SpringBoot对Spring MVC都做了哪些事?(三)
  SpringBoot对Spring MVC都做了哪些事?(四)

Webbeds泰国旅游峰会在曼谷举行重点关注中国市场峰会现场王贤思摄中新网曼谷2月9日电(王国安王贤思)Webbeds2023年泰国旅游峰会当地时间2月8日在曼谷举行,众多泰国本地及境外旅游企业代表参会。嘉宾演讲王贤思摄嘉宾演讲王贤上热搜的这件事,立案调查!日前导游回应不达购物标准不给游客房卡冲上热搜引发网友关注导游心知肚明我们是购物团2月6日,一游客参加广西某旅行团时被强制购物,因消费不达标,导游不给房卡,双方发生争执。该团行程表显景点买的便宜佛珠手串救了我不信鬼神的我却偏偏遇到一桩诡异的事件,小小的佛珠手串竟然在危险来临之前给我示警,让我免去了一桩车祸灾难。这串佛珠是8。9年前在随公司团队去外地旅游的时候在山上一个景点的小摊上买的,中国6大地域错觉没去过就很难相信,新疆被误会最多仅凭着初中地理课上学来的一鳞半爪,还远远谈不上了解世界。我们对这个世界,还存在着太多的误解和不切实际的想象。当你真正踏上梦中的土地,一些知识会被印证而有些知识,则会被彻底推翻。我以谈谈今年春节去潮州和厦门旅游的感受我们正月初七从广州南站坐高铁到潮州,住在牌坊街附近的桔子酒店,当天入住的时候酒店挂牌房价已经1000元左右了,幸亏老公机智提前订好房间。放下行李已经饥肠辘辘,出来找吃的,2家没到营新加坡旅游,代办签证,国际机票,新加坡3日游团队推荐新加坡是东南亚的一个岛国,也是一个城市国家。该国位于马来半岛南端。新加坡用自己的繁荣整洁娱乐民风气候吸引着游客纷至沓来。想去新加坡旅游的小伙伴们看过来啦,新加坡3日游推荐,还有特价这个巨大的洞穴,可以容纳78亿人?来参观一次需花费2万对于神秘的地底世界,所有人都充满了好奇。有一处神奇的地下洞穴,它是一直是地心冒险者想要探索与征服的目标之一。这里和其他山洞最明显的不同之处,就是这个洞穴足够大,它大到足以容纳参天大广西黄姚烟雨似梦游人穿巷品味古今图为一民众购买当地特色美食豆豉。俞靖摄一老者闲坐在铺子里招揽来往游客。俞靖摄游人穿行在古建筑间。俞靖摄古镇云雾缭绕,宛若仙境。俞靖摄航拍黄姚古镇,游船在烟雨中行进。俞靖摄民众在古镇元宵节单日游客10万人次,杨家埠文旅片区春节活动空前火爆鲁网2月9日讯(记者王玉龙通讯员李娜)品地道年味,赏民俗花灯。2023年1月22日2月8日,从大年初一开幕到正月十八收官,历时18天,潍坊市寒亭区杨家埠文旅片区春节活动完美绽放。景记者欧超联赛无永久成员A22认为五大联赛仅英超有可持续性直播吧2月9日讯CBS记者雅各布斯在社交媒体上谈到了欧超联赛发布的改动细节,他表示欧超联赛不会有永久成员,赛事推广方认为欧洲五大联赛中的四个联赛不具备可持续性,而欧超联赛能够让俱乐西湖残荷开始清理预计两周时间完成想拍照的市民游客抓紧啦秋阴不散霜飞晚,留得枯荷听雨声。西湖的残荷成为了杭州冬日里一份独特的萧瑟之美,为了满足市民游客的观赏需求,西湖水域管理处一直尽可能延长西湖残荷的保留时间。近日,杭州市西湖水域管理处
通天塔女主可有可无,女二板着脸,女三号美出天际通天塔在腾讯视频首更了6集,每集实际内容30分钟,开播前的宣传力度很大,造成了未播先火的样子!可是正式开播后,口碑却出现了两极分化,并且还挺严重的!看似毁誉参半,实质上有扑街的可能吴越离开陈建斌17年,不谈恋爱不结婚不生子,与父母相依为命做一个演员,越纯粹就越勇敢。活到这个年纪还没有刻骨铭心的爱情,真是太失败了。谈恋爱是件很棒的事,但没有结果也没关系。很少有吴越这样的女演员。看上去柔弱得如同凌霄花,但骨子里却有着不未婚先孕的我,过得还好吗?写下这篇文字的时候,我正在处理考研上岸之后的一切琐事。毕业三年,我终于圆了大四那年考研上岸的梦想。现在想把这三年的经历写下来,鼓励每一个渴望变好的你。01hr我19年毕业于四川的一七仔说八卦闫妮杨玏田雨董洁白百何张慧雯万鹏郑秀妍贾乃亮闫妮华策献礼单元剧我们这十年的坚持单元主演闫妮,杨玏,田雨,董洁,宋伊人等,唐宫夜宴单元主演白百何,张慧雯,万鹏,娄艺潇,董思怡,预计这周开拍节目原本打算靠郑秀妍蹭热度攒流量,排面给得尹正酒后向刘天佐索吻,他这些年到底经历了什么呀也不知道咋回事,尹正这几年给人的感觉越来越奇怪。近日,狗仔拍到尹正和朋友一块吃饭,吃饱喝足之后,尹正不停地向男生索吻。和一个黑色背心的男士,亲第一次亲第二次动图感受一下又抱着另一位为什么飞机上看不到怀孕的空姐?很多人都对空姐行业的孕产假很好奇,今天给大家简单讲解一下。1空姐怀孕如何请假?当你第一时间得知自己怀孕了,就可以做好准备去公司航医处请孕假,不过需要拿三甲医院的验血报告测hcg即可8年前贵州5岁女童被拐,3年后满身伤痕独自回家,带领警方抓罪犯2014年2月初,贵州5岁女童无故消失,单亲母亲苦苦寻找,三年时间内走遍大江南北却一无所获。三年后,女孩凭借记忆中家的方向,一路跌跌撞撞,总算是找到了离开三年的妈妈。母亲看见伤痕累湖北一明朝藩王墓,连续7次被炸盗,考古队挖掘后文物一件不少他是大明开国皇帝朱元璋的儿子,是实打实的皇二代。死后的陵墓也属于帝王等级的墓葬,主要有享殿7间,红墙周围可达127丈,地面建筑十分宏伟。正因如此,这座墓葬屡屡遭到盗窃。1937年,华为卡脖问题正在被解决,外媒对华为断供反而断了自己后路在过去3年时间里,华为遭到了老美的重拳打压,多次的制裁让华为深陷黑暗之中,并且多个业务都遭到了卡脖危机,比如5G业务智能手机业务芯片业务操作系统业务等,任何一个问题都足以击垮一家世6800亿!赌王洗米华的灰色隐秘,终于揭晓新一代赌王的坠落。1hr6800亿震动港澳的洗米华一案,有了新动向。来自澳门日报微信公众号的消息显示,根据澳门初级法院排期,太阳城创办人周焯华案将在9月2日下午开审,控方证人超过9每日一习话金砖国家应该坚定信念直面风浪习近平作为国际社会积极向上建设性力量,金砖国家应该坚定信念,直面风浪,以实际行动促进和平发展,维护公平正义,倡导民主自由,为处于动荡变革期的国际关系注入稳定性和正能量。这段话出自2