开发辅助一(网关gateway+ThreadLocal封装用户信息+远程调用+读取配置文件+统一异常处理)

网关gateway模块

①、配置文件,添加各个服务模块的路由路径

gateway:routes:-id: server-cart #微服务名称uri: lb://service-cart  #负责均衡predicates:- Path=/api/order/cart/**

ThreadLocal

①、定义一个工具类

public class AuthContextUtil{private static final ThreadLocal<SysUser> threadLocal = new ThreadLocal<>();//存储数据public static void set(SysUser sysUser){threadLocal.set(sysUser);}//获取数据public static SysUser get(){return threadLocal.get();} //删除数据public static void remove(){threadLocal.remove();}
}

②、业务方法中使用

@GetMapping(value="/getUserInfo")
public Result getUserInfo(){return Result.build(AuthConextUtil.get(),ResultCodeEnum.SUCCESS); //从ThreadLocal中获取用户信息
}

远程调用

购物车服务模块——>商品服务模块中的数据
在这里插入图片描述

①、service-client模块将调用接口单独剥离出来作为调用接口端

添加依赖:spring-cloud-starter-openfeign spring-cloud-loadbalancer

创建远程调用接口

@FeignClient(value="service-product") //value的值和service-product模块中配置文件服务名称一致
public interface ProductFeignClient{@GetMapping("/api/product/getBySkuId/{skuId}")public ProductSku getBySkuId(@PathVariable("skuId") Long skuId);
}

②、service-cart模块中引入service-client模块坐标

启动类上添加注解

@EnableFeignClients(basePackages = {"com.michael.spzx"})
@EnableUserLoginAuthInterceptor //该注解是针对ThreadLocal存入的用户信息
@Autowired
private ProductFeignClient productFeignClient;//将接口进行注入//方法中,调用即可

③、service-product模块服务提供

service/mapper省略

@GetMapping("/getbySkuId/{skuId}")
public ProductSku getBySkuId(@PathVariable Long skuId){ProductSku productSku = productService.getBySkuId(skuId);return productSku;
}

读取配置文件

①、配置文件

配置文件的相互导入

application-alipay.yml

spzx:applipay:  #值省略allipay_url: app_id: app_private_key: return_payment_url:notify_payment_url:

application-dev.yml中进行引入

spring:config:import: application-alipay.yml

②、定义实体类读取配置文件

@Data
@ConfigurationProperties(prefix="apzx.alipay")
public class AlipayProperties{private String alipayUrl; //属性名和配置文件中的保持一致private String appPrivateKey;public String alipayPublicKey;private String appId;public String returnPaymentUrl;public String notifyPaymentUrl;public final static String format="json";public final static String charset="utf-8";public final static String sign_type="RSA2"
}

③、启动类添加注解

@EnableConfigurationProperties(value={AlipayProperties.class})

统一异常

①、创建异常定义

@ControllerAdvice //给Controller增加一个统一操作
public class GlobalExceptionHandler{//全局异常处理@ExceptionHandler(Exception.class)@ResponseBodypublic Result error(){return Result.build(null,ResultCodeEnum,SYSTEM_ERROR);}//引入自定义异常@ExceptionHandler(GuiGuException.class)@ResponseBodypublic Result error(GuiguException e){return Result.build(null,e.getResultCodeEnum());}
}
/**自定义异常
*/
@Data
public class GuiguException extends RuntimeException{private Integer code;private String message;private ResultCodeEnum resultCodeEnum; //枚举类封装的错误状态码和错误信息public GuiguExcetion(ResultCodeEnum resultCodeEnum){this.resultCodeEnum = resultCodeEnum;this.code = resultCodeEnum.getCode;this.message = resultCodeEnum.getMessage();}public GuiguExcetion(Integer code,String message){this.code = code;this.message = message;}
}

②、Service业务类使用

if(sysUser == null){//throw new RuntimeException("用户名或密码错误");//改成自定义异常throw new GuiguException(ResultCodeEnum.LOGIN_ERROR);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新奇性搜索(Novelty Search,NS)

新奇性搜索&#xff08;Novelty Search&#xff0c;NS&#xff09;是一种基于进化算法的搜索优化方法&#xff0c;它通过追求新颖性来引导进化过程&#xff0c;而不是仅仅追求目标函数的优化。这种方法的灵感来自于自然进化中的创新和多样性。通过发现新的行为模式&#xff0c;…

【Redis】缓存预热

目录 常见缓存Redis客户端设计缓存key缓存预热 常见缓存 ● Redis&#xff08;分布式缓存&#xff09; ● memcached&#xff08;分布式&#xff09; ● Etcd&#xff08;云原生架构的一个分布式存储&#xff0c;存储配置&#xff0c;扩容能力&#xff09; ● ehcache&#xf…

Facebook自动回复脚本编写教程

在数字时代&#xff0c;社交媒体已经成为人们交流和建立联系的重要渠道&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;拥有数十亿的用户&#xff0c;为企业和个人提供了无限的社交可能性。 然而&#xff0c;对于企业和个人来说&#xff0c;在Facebook上保持…

脱壳后多dex文件合并进apk反编译

我们遇到加固后的apk&#xff0c;在脱壳后有很多dex文件&#xff0c;有时候我们只反编译有关键代码的dex会存在一些上下文代码找不到的情况&#xff0c;这时候我们需要多dex一起反编译&#xff0c;并且需要同步看看资源文件怎么办&#xff1f;&#xff1a; 我们可以把多dex塞回…

华为eNSP入门实验,Vlan配置,路由配置,用户模式,链路聚合

文章目录 一、同一交换机下的PC通信二、不交换机下的PC通信三、配置静态路由通信四、路由器rip协议配置五、路由器ospf协议配置六、单臂路由七、通过三层交换机使不同的Vlan能连通八、设备consolo密码模式九、设备consolo用户密码模式&#xff08;AAA模式&#xff09;十、Telne…

Centos7中KeepAlivedNginx高可用

Centos7中KeepAlived&Nginx高可用 一.部署前规划 角色操作系统IPmasterCentos7.8192.168.56.101backupCentos7.8192.168.56.102 二.keepalived安装 在两台机器上执行安装 yum install -y keepalived三.master角色配置&#xff08;192.168.56.101&#xff09; /etc/kee…

虚拟机服务器中了lockbit2.0/3.0勒索病毒怎么处理,数据恢复应对步骤

网络技术的不断发展也为网络威胁带来了安全隐患&#xff0c;近期&#xff0c;对于许多大型企业来说&#xff0c;许多企业的虚拟机服务器系统遭到了lockbit2.0/3.0勒索病毒攻击&#xff0c;导致企业所有计算机系统瘫痪&#xff0c;无法正常工作&#xff0c;严重影响了企业的正常…

Python能做大项目(6)Poetry -- 项目管理的诗和远方之一

[Poetry] 是一个依赖管理和打包工具。Poetry 的作者解释开发 Poetry 的初衷时说&#xff1a; 通过前面的案例&#xff0c;我们已经提出了一些问题。但不止于此。 当您将依赖加入到 requirements.txt 时&#xff0c;没有人帮你确定它是否与既存的依赖能够和平共处&#xff0c;这…

电脑监控软件排行榜(电脑监控软件隐藏安装)

在当今数字化时代&#xff0c;电脑已经成为我们工作、学习和生活中不可或缺的工具。然而&#xff0c;随着电脑使用的普及&#xff0c;电脑监控软件也逐渐浮出水面。这类软件可以对电脑进行全方位的监控和管理&#xff0c;保护电脑安全、提高工作效率。 本文将为您介绍电脑监控…

Unity is running with Administrator privileges, which is not supported

Unity is running with Administrator privileges, which is not supported 如果还是弹出CMD窗口提示输入密码&#xff0c;但无法怎样都无法输入&#xff0c;请关闭窗口&#xff0c;然后右键快捷方式管理员运行一次。 ----------分割线---------- 为什么这样做&#xff1f; 很…

【译文】IEEE白皮书 6G 太赫兹技术的基本原理 2023版

第一章 简介 太赫兹波是介于微波和光波之间的光谱区域&#xff0c;频率从 0.1THz ~ 10THz 之间&#xff0c;波长在 3mm ~ 30μm 之间。提供大块连续的频带范围以满足对 Tbit/s 内极高数据传输速率的需求&#xff0c;使该区域成为下一代无线通信&#xff08;6G&#xff09;的重…

数字化时代的探索:学生为何对数据可视化趋之若鹜?

随着信息时代的迅猛发展&#xff0c;数据已经成为我们生活中不可或缺的一部分。而在这个数字化浪潮中&#xff0c;越来越多的学生开始关注数据可视化&#xff0c;这并非偶然。下面&#xff0c;我就从可视化从业者的角度出发&#xff0c;简单聊聊为什么越来越多的学生开始关注数…

在离线环境下也能展示地理空间数据?快来收下这份操作文档

《四维轻云-离线版》是一款操作简单、支持离线展示及编辑的地理空间数据离线管理平台。在《四维轻云-离线版》中&#xff0c;用户可以展示及编辑倾斜模型(.osgb)、激光点云(.las)、正射影像(dom)、数字高程模型(dem)、矢量数据(shp)、人工模型&#xff08;.obj、.dae、.fbx&…

Midjourney V6 引爆社交媒体,AI图像与照片的差别消失;LangChain的2023AI发展状况总结

&#x1f989; AI新闻 &#x1f680; Midjourney V6 引爆社交媒体&#xff0c;AI图像与照片的差别消失 摘要&#xff1a;Midjourney V6 第二次社区评价震惊网友&#xff0c;神图细节逼真&#xff0c;光影效果逆天&#xff0c;皮肤质感细腻&#xff0c;已超越昨日版本。V6即将…

轻松祛除烦人水印:三款简单易用的图片去水印工具介绍

在图像编辑中&#xff0c;去除水印是一项常见但又相对复杂的任务。图片水印往往成为图像处理和美化过程中的障碍。为了帮助你应对这个问题&#xff0c;下面介绍四款简单易用、效果显著的图片去水印工具。 图片去水印工具一&#xff1a;水印云 工具简介&#xff1a;水印云是一款…

181.【2023年华为OD机试真题(C卷)】查找接口成功率最优时间段(深度优先搜索(DFS)实现JavaPythonC++JS)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】查找接口成功率最优时…

高性能内存队列Disruptor入门和实战

目录 Disruptor简介 Disruptor的设计方案 RingBuffer数据结构 一个生产者单线程写数据的流程 多个生产者写数据的流程 消费者读数据 多个生产者写数据 Disruptor核心概念 Disruptor的使用 单生产者单消费者模式 单生产者多消费者模式 多生产者多消费者模式 消费者…

AI协助信息安全的药物发现

人工智能工具使公司能够共享候选药物数据,同时保证敏感信息的安全,可以释放机器学习和尖端实验室技术的潜力,以实现共同利益。来自:AI can help to speed up drug discovery — but only if we give it the right data, nature, 2023 目录 研究内容生物科技与AI联邦学习主动…

5+双硫死亡+分型+实验,双硫死亡又上大分。干湿结合拿下5+

今天给同学们分享一篇生信文章“The role of molecular subtypes and immune infiltration characteristics based on disulfidptosis-associated genes in lung adenocarcinoma”&#xff0c;这篇文章发表在Aging (Albany NY)期刊上&#xff0c;影响因子为5.2。 结果解读&…

.Net7.0 或更高版本 System.Drawing.Common 上传图片跨平台方案

项目升级.Net7.0以后&#xff0c;System.Drawing.Common开关已经被删除&#xff0c;且System.Drawing.Common仅在 Windows 上支持 &#xff0c;于是想办法将原来上传图片验证文件名和获取图片扩展名方法替换一下&#xff0c;便开始搜索相关解决方案。 .Net6.0文档&#xff1a;…