当前位置: 首页 > news >正文

岱山县网站建设wordpress singular

岱山县网站建设,wordpress singular,家具设计大师,做网站数据库多少钱Spring Cloud Gateway 路由构建器的源码分析 文章目录 1. 路由构建器的入口2. 创建路由规则3. 设置路由规则和属性4. 路由过滤器的设置5. 构建和获取路由规则#xff1a;6. 实例化路由构建器#xff1a;8. 路由构建器的源码分析8.1 RouteLocator接口8.2 RouteLocatorBuilder…Spring Cloud Gateway 路由构建器的源码分析 文章目录 1. 路由构建器的入口2. 创建路由规则3. 设置路由规则和属性4. 路由过滤器的设置5. 构建和获取路由规则6. 实例化路由构建器8. 路由构建器的源码分析8.1 RouteLocator接口8.2 RouteLocatorBuilder接口8.3 DefaultRouteLocator实现8.4 RouteDefinitionRouteLocator实现 Spring Cloud Gateway的路由构建器是用于创建和配置路由的核心组件之一。它允许你以编程方式定义路由规则并设置各种路由属性和过滤器。下面是Spring Cloud Gateway路由构建器的源码分析 1. 路由构建器的入口 路由构建器的入口是RouteLocatorBuilder类它是一个构建器模式的入口类。通过RouteLocatorBuilder你可以创建和配置路由规则。 2. 创建路由规则 使用RouteLocatorBuilder的routes()方法创建一个RouteLocator实例用于定义路由规则。RouteLocatorBuilder的routes()方法返回一个Builder对象通过该对象可以进行路由规则的设置和配置。 3. 设置路由规则和属性 Builder对象提供了一系列方法用于设置路由规则和属性。可以使用Builder的route()方法设置路由规则例如指定请求路径、目标URI等。可以使用Builder的各种属性方法设置路由的附加属性例如请求谓词、过滤器等。 4. 路由过滤器的设置 通过Builder的filters()方法可以设置路由过滤器。可以使用过滤器工厂类如GatewayFilterFactory提供的方法创建过滤器并将其添加到路由规则中。 5. 构建和获取路由规则 使用Builder的build()方法构建RouteLocator实引言例生成最终的路由规则。RouteLocator表示完整的路由规则集合可以通过该实例获取所有配置好的路由规则。 6. 实例化路由构建器 要实例化RouteLocatorBuilder可以通过依赖注入或创建一个新的实例。通常可以在Spring Boot的配置类中使用Bean注解创建一个RouteLocatorBuilder的实例。 8. 路由构建器的源码分析 8.1 RouteLocator接口 这是一个功能接口定义了一个方法getRoutes()该方法返回一个Publisher当订阅时发布所有的Route集合。 8.2 RouteLocatorBuilder接口 RouteLocatorBuilder是Spring Cloud Gateway中用于构建RouteLocator的工具类它提供了一种简洁、易读的方式来定义路由。RouteLocatorBuilder的主要方法是routes()返回一个RoutesLocatorBuilder.Builder对象我们可以在此对象上定义特定的路由。 RouteLocatorBuilder的成员变量包括: ListRoutePredicateFactory这是一个负责创建路由断言的工厂列表断言用来判断请求是否满足特定条件。ListRouteFilterFactory这是一个负责创建过滤器的工厂列表过滤器用来对满足断言的请求进行处理。 RouteLocatorBuilder的主要方法包括: routes()这个方法返回一个RouteLocatorBuilder.Builder对象你可以在这个对象上使用诸如route()方法来定义路由。route(RouteLocatorBuilder.BuilderSpec spec)这个方法是RouteLocatorBuilder.Builder的一个方法它可以接受一个RouteLocatorBuilder.BuilderSpec参数然后根据这个参数来定义一个路由。你可以在这个方法的参数中定义断言和过滤器。 注意RouteLocatorBuilder并不负责加载和转换路由定义这是DefaultRouteLocator的职责。RouteLocatorBuilder只是提供了一个方便的方式来定义路由。 这里是一个简单的示例来展示如何使用RouteLocatorBuilder来定义路由 Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route(path_route, r - r.path(/get).uri(http://httpbin.org)).build(); }在此示例中我们定义了一个路由该路由将所有路径为/get的请求路由到http://httpbin.org。 8.3 DefaultRouteLocator实现 DefaultRouteLocator 是 Spring Cloud Gateway 的默认路由定位器实现负责加载和转换路由定义。它的源代码比较复杂这里只简要概述其主要功能和工作原理。 DefaultRouteLocator的核心成员变量包括 RouteDefinitionLocator用于从各种来源例如内存数据库配置文件等获取路由定义。ListRoutePredicateFactory用于根据路由定义创建断言断言用于判断请求是否满足特定条件。ListRouteFilterFactory用于根据路由定义创建过滤器过滤器用于处理满足断言的请求。 DefaultRouteLocator的主要方法是 getRoutes()返回所有有效的路由。该方法首先调用RouteDefinitionLocator来获取所有的路由定义然后对每一个路由定义创建一个断言和一组过滤器并将它们封装成一个Route对象。 这是一个简单的 getRoutes() 方法的实现流程 public FluxRoute getRoutes() {// 从RouteDefinitionLocator获取所有路由定义FluxRouteDefinition routeDefinitionFlux this.routeDefinitionLocator.getRouteDefinitions();// 转换每个路由定义为Route对象return routeDefinitionFlux.map(routeDefinition - {// 创建断言PredicateServerWebExchange predicate this.getPredicate(routeDefinition);// 创建过滤器链ListGatewayFilter gatewayFilters this.getFilters(routeDefinition);// 生成并返回Route对象return new Route(routeDefinition.getId(), predicate, gatewayFilters, routeDefinition.getUri());}); }8.4 RouteDefinitionRouteLocator实现 RouteDefinitionRouteLocator是Spring Cloud Gateway中的一个核心类它的主要职责是提供路由定位的功能。它会从RouteDefinitionLocator中获取所有的RouteDefinition然后将这些RouteDefinition转换成Route对象以供后续的路由匹配和过滤使用。 简单的RouteDefinitionRouteLocator类的源码解析 public class RouteDefinitionRouteLocator implements RouteLocator {private final RouteDefinitionLocator routeDefinitionLocator;private final ListGatewayFilterFactory gatewayFilters;private final ListRoutePredicateFactory routePredicates;private final RouteFactory routeFactory;public RouteDefinitionRouteLocator(RouteDefinitionLocator routeDefinitionLocator,ListGatewayFilterFactory gatewayFilters,ListRoutePredicateFactory routePredicates,RouteFactory routeFactory) {this.routeDefinitionLocator routeDefinitionLocator;this.gatewayFilters gatewayFilters;this.routePredicates routePredicates;this.routeFactory routeFactory;}Overridepublic FluxRoute getRoutes() {return this.routeDefinitionLocator.getRouteDefinitions().flatMap(this::convertToRoute);}private MonoRoute convertToRoute(RouteDefinition routeDefinition) {ListPredicateServerWebExchange predicates this.routePredicates.stream().map(factory - factory.apply(routeDefinition.getId())).collect(Collectors.toList());ListGatewayFilter filters this.gatewayFilters.stream().map(factory - factory.apply(routeDefinition.getFilters())).collect(Collectors.toList());return this.routeFactory.createRoute(routeDefinition, predicates, filters);} }在这个类中我们可以看到以下重要部分 构造函数它接收一个RouteDefinitionLocator一个GatewayFilterFactory列表一个RoutePredicateFactory列表和一个RouteFactory。这些都是从Spring容器中注入的。 getRoutes()方法该方法通过调用RouteDefinitionLocator.getRouteDefinitions()来获取所有的RouteDefinition然后通过flatMap操作符将每个RouteDefinition转换为一个Route对象。 convertToRoute(RouteDefinition routeDefinition)方法这个方法会将一个RouteDefinition转换为一个Route对象。转换过程中会使用RoutePredicateFactory列表和GatewayFilterFactory列表来创建路由断言和过滤器。 这个类的主要作用就是将路由定义RouteDefinition转换成实际可用的路由Route以供后续的路由匹配和过滤使用。 RouteDefinitionRouteLocator类并不是Spring Cloud Gateway的官方源码上面的代码只是一个简化版本用来解释RouteDefinitionRouteLocator工作原理。在实际的Spring Cloud Gateway源码中这个类的名字是RouteDefinitionRouteLocator并且它的实现要复杂得多包括处理各种异常情况处理各种路由配置选项等等。
文章转载自:
http://www.morning.prjty.cn.gov.cn.prjty.cn
http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn
http://www.morning.ktnt.cn.gov.cn.ktnt.cn
http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn
http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn
http://www.morning.lrzst.cn.gov.cn.lrzst.cn
http://www.morning.bpmdq.cn.gov.cn.bpmdq.cn
http://www.morning.zcfmb.cn.gov.cn.zcfmb.cn
http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn
http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn
http://www.morning.rrrrsr.com.gov.cn.rrrrsr.com
http://www.morning.fypgl.cn.gov.cn.fypgl.cn
http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn
http://www.morning.fnssm.cn.gov.cn.fnssm.cn
http://www.morning.fksrg.cn.gov.cn.fksrg.cn
http://www.morning.zlgr.cn.gov.cn.zlgr.cn
http://www.morning.wfjyn.cn.gov.cn.wfjyn.cn
http://www.morning.fypgl.cn.gov.cn.fypgl.cn
http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn
http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn
http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn
http://www.morning.nqypf.cn.gov.cn.nqypf.cn
http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn
http://www.morning.nsppc.cn.gov.cn.nsppc.cn
http://www.morning.hgsmz.cn.gov.cn.hgsmz.cn
http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn
http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn
http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn
http://www.morning.hffjj.cn.gov.cn.hffjj.cn
http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.qygfb.cn.gov.cn.qygfb.cn
http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn
http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn
http://www.morning.hhpbj.cn.gov.cn.hhpbj.cn
http://www.morning.blfll.cn.gov.cn.blfll.cn
http://www.morning.sxygc.cn.gov.cn.sxygc.cn
http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn
http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn
http://www.morning.rlsd.cn.gov.cn.rlsd.cn
http://www.morning.hffpy.cn.gov.cn.hffpy.cn
http://www.morning.hphrz.cn.gov.cn.hphrz.cn
http://www.morning.stpkz.cn.gov.cn.stpkz.cn
http://www.morning.fdrwk.cn.gov.cn.fdrwk.cn
http://www.morning.wcjk.cn.gov.cn.wcjk.cn
http://www.morning.bwmm.cn.gov.cn.bwmm.cn
http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn
http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn
http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn
http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn
http://www.morning.flhnd.cn.gov.cn.flhnd.cn
http://www.morning.fhwfk.cn.gov.cn.fhwfk.cn
http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn
http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn
http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn
http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn
http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn
http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn
http://www.morning.pznnt.cn.gov.cn.pznnt.cn
http://www.morning.qclmz.cn.gov.cn.qclmz.cn
http://www.morning.rqnml.cn.gov.cn.rqnml.cn
http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn
http://www.morning.nfpkx.cn.gov.cn.nfpkx.cn
http://www.morning.qkdcb.cn.gov.cn.qkdcb.cn
http://www.morning.qqpg.cn.gov.cn.qqpg.cn
http://www.morning.spdyl.cn.gov.cn.spdyl.cn
http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn
http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn
http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn
http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn
http://www.morning.pbxkk.cn.gov.cn.pbxkk.cn
http://www.morning.bntfy.cn.gov.cn.bntfy.cn
http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn
http://www.morning.cpfbg.cn.gov.cn.cpfbg.cn
http://www.morning.yrpg.cn.gov.cn.yrpg.cn
http://www.morning.jlxld.cn.gov.cn.jlxld.cn
http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn
http://www.morning.lnrr.cn.gov.cn.lnrr.cn
http://www.tj-hxxt.cn/news/271708.html

相关文章:

  • WordPress一键开启全站SSL.net网站费用
  • 解决网站兼容性问题软件职业培训
  • wordpress 网站源码高清图片素材哪里找
  • 南京网站公司网站icp备案申请
  • 建设网站的网站是什么网上花店网页制作教程
  • asp net4.0网站开发网站建设需要什么研究条件
  • 淄川网站建设自建网站注册域名很有必要
  • 丹东新区建设发展集团网站做个手机网站有必要吗
  • 网站流量转化免费提供网站
  • 网站建设报价东莞购物网站推广方案
  • 陆家网站建设手机网站制作与建设
  • 帝国cms网站地址移动网站建设初学视频教程
  • 做投融资平台的网站都有哪些?网络营销指的是什么意思
  • 公司做网站多少钱怎么查网站有没有做404
  • 宜宾建设网站建站优化全包
  • 北京做网站价格免费erp系统软件有哪些
  • 对网站做综合搜索引擎优化分析阿里云网站建设一次付费
  • 创建网站的英语网站 分析
  • 建立网站原理网站建站行业
  • 知名企业门户网站建设北京朝阳区楼盘
  • 网站建设主体力量企业网站硬件设计
  • 开发网站需要注意seo短视频网页入口引流动漫
  • 永久免费的ppt网站在线家装设计平台免费
  • 建设自己的网站有钱赚么谷歌优化方法
  • 网站开发 分类编码定制化软件
  • 做六个网站静态页多少钱phonegap wordpress
  • 做防伪的网站湖北网站建设找哪家
  • 专业购物网站建设哪家好seo标题优化的心得总结
  • 培训网站建设公司哪个网站可以接做美工的活儿
  • 建设网站的总结重庆航运建设发展有限公司网站