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

营销型网站建设企业营销型网站平台织梦手机网站分亨链接怎么做

营销型网站建设企业营销型网站平台,织梦手机网站分亨链接怎么做,在线培训系统搭建方案,wordpress发送页面失败好的#xff0c;下面是优化后的版本。为了提高可读性和规范性#xff0c;我对内容进行了结构化、简化了部分代码#xff0c;同时增加了注释说明#xff0c;便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖#xff1a; dependencies!-- Spring Cloud Gate…好的下面是优化后的版本。为了提高可读性和规范性我对内容进行了结构化、简化了部分代码同时增加了注释说明便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖 dependencies!-- Spring Cloud Gateway提供API网关功能 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!-- Spring Cloud Alibaba Nacos Discovery用于服务发现 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- Spring Cloud Loadbalancer提供客户端负载均衡 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency /dependencies2. 启动类 (GateApplication.java) 定义主启动类启动 Spring Boot 应用 SpringBootApplication // 标明这是Spring Boot应用的入口 public class GateApplication {public static void main(String[] args) {SpringApplication.run(GateApplication.class, args); // 启动应用} }3. 配置文件 (application.yml) 配置网关的基本设置、Nacos 服务发现以及路由规则。 server:port: 8080 # 配置网关监听的端口spring:application:name: gateway # 应用名称用于 Nacos 等服务发现cloud:nacos:discovery:server-addr: xiaotianlong.xyz:8848 # 配置 Nacos 服务器地址gateway:routes: # 配置网关的路由规则# 路由规则 1- id: service_name # 路由的唯一IDuri: lb://service_name # 使用负载均衡访问注册到 Nacos 中的服务predicates:- Path/user/** # 请求路径以 /user/ 开头时触发此路由filters:- AddRequestHeaderX-Request-Foo, Bar # 添加请求头# 路由规则 2- id: service_name2uri: lb://service_name2predicates:- Path/order/** # 请求路径以 /order/ 开头时触发此路由4. 自定义全局过滤器 定义一个全局过滤器记录请求的时间并打印日志。 Component // 声明为Spring组件 public class MyGlobalFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 记录请求开始时间System.out.println(请求开始时间: System.currentTimeMillis());// 放行请求return chain.filter(exchange).then(Mono.fromRunnable(() - {// 记录请求结束时间System.out.println(请求结束时间: System.currentTimeMillis());}));}Overridepublic int getOrder() {// 过滤器的执行顺序数字越小优先级越高return 0;} }5. 自定义Gateway过滤器 创建一个自定义的 Gateway 过滤器工厂允许动态配置过滤器的参数。 Component public class MyGatewayFilterFactory extends AbstractGatewayFilterFactoryMyGatewayFilterFactory.Config {// 内部配置类允许用户配置过滤器的参数Datapublic static class Config {private String pattern yyyy-MM-dd; // 设置默认日期格式private String message 默认日志信息; // 自定义日志信息}public MyGatewayFilterFactory() {super(Config.class); // 指定配置类类型}Overridepublic ListString shortcutFieldOrder() {return List.of(pattern, message); // 设置快捷字段顺序}Overridepublic GatewayFilter apply(Config config) {// 创建过滤器逻辑return new OrderedGatewayFilter((exchange, chain) - {DateTimeFormatter formatter DateTimeFormatter.ofPattern(config.getPattern());System.out.println(请求开始时间: formatter.format(LocalDateTime.now()));System.out.println(config.getMessage()); // 打印自定义日志信息return chain.filter(exchange).then(Mono.fromRunnable(() - {System.out.println(请求结束时间: formatter.format(LocalDateTime.now()));}));}, 1);//在这里设置顺序} }6. 配置自定义过滤器 在 application.yml 文件中配置自定义的 MyGatewayFilterFactory 过滤器使其生效 spring:cloud:gateway:routes:- id: example_routeuri: lb://some-servicepredicates:- Path/somepath/** # 路径匹配条件filters:- name: My # 使用自定义过滤器args:pattern: yyyy-MM-dd~HH:mm:ss # 自定义日期格式message: 这是一个统计时间的gateway过滤器 # 自定义日志信息或者 spring:cloud:gateway:routes:- id: example_routeuri: lb://some-servicepredicates:- Path/somepath/** # 路径匹配条件filters:# 由于设置了shortcutfieldorder,所以可以这样写- Myyyyy-MM-dd~HH:mm:ss, 这是一个统计时间的gateway过滤器案例1:登录检验 Component EnableConfigurationProperties(AuthProperties.class) public class AuthGlobalFilter implements GlobalFilter, Ordered {Resourceprivate AuthProperties authProperties;Resourceprivate JwtTool jwtTool;private final AntPathMatcher antPathMatcher new AntPathMatcher();Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {//1.获取requestServerHttpRequest request exchange.getRequest();//2.判断路径是否需做登录拦截ListString excludePaths authProperties.getExcludePaths();if (isExclude(request.getPath())) {//此时不需要拦截,直接放行return chain.filter(exchange);}//3.获得tokenString token request.getHeaders().getFirst(authorization);//4.检验并解析tokenLong userId null;try {userId jwtTool.parseToken(token);} catch (Exception e) {//设置响应状态码为401ServerHttpResponse response exchange.getResponse();response.setStatusCode(HttpStatus.UNAUTHORIZED);//拦截return response.setComplete();}//todo 5.传递用户信息//6.放行return chain.filter(exchange);}private boolean isExclude(RequestPath path) {ListString excludePaths authProperties.getExcludePaths();for (String pattern : excludePaths) {if (antPathMatcher.match(pattern, path.toString())) {return true;}}return false;}Overridepublic int getOrder() {return 0;} } 7.结合Nacos实现动态路由 在Spring Cloud Gateway中路由的配置默认是在项目启动时通过 org.springframework.cloud.gateway.route.CompositeRouteDefinitionLocator 进行加载的。这些配置一旦加载到内存中通常是通过一个 Map 缓存就不会随路由变化而更新也不支持热更新功能。因此我们需要借助 Nacos 来实现动态的路由更新功能。 这涉及到两个关键问题 如何监听Nacos配置变更如何把新的路由信息更新到路由表中 7.1 引入依赖 首先我们需要在项目中引入Nacos的配置和启动依赖 !-- 统一配置管理 -- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency!-- 加载bootstrap配置 -- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId /dependency7.2 配置bootstrap.yaml 在网关项目的 resources 目录下创建 bootstrap.yaml 文件配置Nacos的服务地址和路由配置的相关信息 spring:application:name: gatewaycloud:nacos:discovery:server-addr: xiaotianlong.xyz:8848config:server-addr: xiaotianlong.xyz:88487.3 定义配置监听器 接下来我们编写一个配置监听器类用于监听Nacos配置变更并更新路由。监听器需要通过 NacosConfigManager 获取配置内容并在路由配置更新时动态更新路由表。 package com.hmall.gateway.route;import cn.hutool.json.JSONUtil; import com.alibaba.cloud.nacos.NacosConfigManager; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; import com.hmall.common.utils.CollUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.route.RouteDefinition; import org.springframework.cloud.gateway.route.RouteDefinitionWriter; import org.springframework.stereotype.Component; import reactor.core.publisher.Mono;import javax.annotation.PostConstruct; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.Executor;Slf4j Component RequiredArgsConstructor public class DynamicRouteLoader {private final RouteDefinitionWriter writer;private final NacosConfigManager nacosConfigManager;// 路由配置文件的dataId和groupprivate final String dataId gateway-routes.json;private final String group DEFAULT_GROUP;// 保存已更新的路由IDprivate final SetString routeIds new HashSet();PostConstructpublic void initRouteConfigListener() throws NacosException {// 注册Nacos配置监听器并拉取配置String configInfo nacosConfigManager.getConfigService().getConfigAndSignListener(dataId, group, 5000, new Listener() {Overridepublic Executor getExecutor() {return null; // 默认执行器为null}Overridepublic void receiveConfigInfo(String configInfo) {updateConfigInfo(configInfo); // 配置变更时更新路由}});// 首次启动时加载配置updateConfigInfo(configInfo);}private void updateConfigInfo(String configInfo) {log.debug(监听到路由配置变更{}, configInfo);// 1. 反序列化配置ListRouteDefinition routeDefinitions JSONUtil.toList(configInfo, RouteDefinition.class);// 2. 清除旧路由配置routeIds.forEach(routeId - writer.delete(Mono.just(routeId)).subscribe());routeIds.clear();// 3. 判断并更新新的路由配置if (CollUtils.isEmpty(routeDefinitions)) {// 如果没有新的路由配置直接结束return;}// 4. 更新新的路由配置routeDefinitions.forEach(routeDefinition - {// 保存新路由writer.save(Mono.just(routeDefinition)).subscribe();// 记录路由ID方便未来删除routeIds.add(routeDefinition.getId());});} }在Nacos控制台我们可以添加路由配置文件 gateway-routes.json类型选择JSON。路由配置的示例内容如下 [{id: item,predicates: [{name: Path,args: {_genkey_0:/items/**, _genkey_1:/search/**}}],filters: [],uri: lb://item-service},{id: cart,predicates: [{name: Path,args: {_genkey_0:/carts/**}}],filters: [],uri: lb://cart-service},{id: user,predicates: [{name: Path,args: {_genkey_0:/users/**, _genkey_1:/addresses/**}}],filters: [],uri: lb://user-service},{id: trade,predicates: [{name: Path,args: {_genkey_0:/orders/**}}],filters: [],uri: lb://trade-service},{id: pay,predicates: [{name: Path,args: {_genkey_0:/pay-orders/**}}],filters: [],uri: lb://pay-service} ]通过以上配置网关将能够动态地加载和更新路由配置使得路由在Nacos配置变更时自动同步更新。
http://www.w-s-a.com/news/192412/

相关文章:

  • 地方门户网站源码下载揭阳专业网站建设
  • 网站做优化好还是推广好wordpress百家号模版
  • 淘宝网网站建设的的意见校园微网站建设
  • 小说网站建设之前需求分析免费下载京东购物
  • 园林景观设计案例网站wordpress 文章内容页
  • 网站什么做才会更吸引客户楚雄网站开发rewlkj
  • 电商网站构建预算方案视频制作网站怎么做
  • 包装设计灵感网站ps软件下载电脑版多少钱
  • 手机网站图片做多大原网站开发新功能
  • 网站设计培训成都陕西网站建设公司哪有
  • expedia电子商务网站建设辽宁网站设计
  • 深圳网站建设网站运营绥芬河市建设局网站
  • 家政服务网站做推广有效果吗做图软件ps下载网站有哪些
  • 北京市建设教育协会网站flash网站制作单选框和复选框ui组件
  • 国外有没有做问卷调查的网站网站网页怎么做
  • 简单个人网站模板下载网站建设整体情况介绍
  • 网站建设做到哪些内容荆门网站建设电话咨询
  • 玉树网站建设公司双11主机 wordpress 2015
  • dw做网站背景图片设置汕头seo管理
  • 个人又什么办法做企业网站唐山哪里建轻轨和地铁
  • 手机网站404页面室内设计公司排名前100
  • 做民宿需要和多家网站合作吗创建软件的步骤
  • 网站导航栏设计要求辽宁省住房和城乡建设厅
  • 海外网站平台腾讯营销平台
  • 东道网站建设良品铺子网络营销案例
  • 免费企业查询软件优化模型
  • 兰亭集势的网站平台建设凡科网站免费版怎么做
  • 在网站做推广要钱吗网站根目录是哪个文件夹
  • 网站建设如何弄链接海外vps一键配置WordPress
  • 1个ip可以做几个网站吗动画制作可以自学吗