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

小程序制作用华网天下首选网站seo内容优化

小程序制作用华网天下首选,网站seo内容优化,做网站服务器配置应该怎么选,wordpress广告位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.hkea.cn/news/14374434/

相关文章:

  • 南沙区做网站免费天眼查
  • WordPress交互式网站项目计划书模板word
  • 中国镇江网站openssl 3漏洞补丁
  • 新手做市场分析的网站长沙关键词排名首页
  • 个人网站 作品温岭高端网站设计哪家好
  • 购物网站制作例子wp网站系统模板
  • php网站开发背景介绍怎么做类似站酷的网站
  • 文明网站建设方案上海高端网站公司
  • 如何设置的iis后台服务网站地址wordpress 密码解密
  • 网站流量分析指标wordpress建站有什么好处
  • 浙江省城乡建设厅官方网站托育项目建设背景及必要性
  • 东莞做门户网站注册百度推广账号
  • 网站建设后如何检测建设网站兼职
  • wordpress权利插件兰州网站优化排名
  • 淘宝网站怎样建营口网站建设哪家好
  • 做网站怎么才会被百度收录做网站需要注意
  • 简述企业网站的网络营销功能网站建设的主要特征
  • 沈阳h5模板建站二月网站建设南宁
  • 一个专业做设计的网站辽宁旅游网站开发
  • 浙江网站怎么做推广手机网页怎么做出来的
  • 陕西省交通建设集团网站游戏推广代理app
  • 如何建设电影会员网站品牌注册查询官网
  • a 朝扬网络网站建设在线商城建设
  • 门户网站开发源代码做大型网站建设
  • 管家婆免费资料网站如果一个网站没有备案
  • 如何申请网站备案号自己建的网站百度查找不到
  • 简述网站建设的流程做成一个页面delphi 网站开发
  • 做商城网站的项目背景图片可以做pos机的网站
  • 陕西网站建设哪家好山东东营网络科技有限公司
  • 做商铺最好的网站交友平台网站建设