![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring boot
文章平均质量分 83
等那时夕颜
这个作者很懒,什么都没留下…
展开
-
spring cloud脚手架项目(十六)开发HTTP API 接口签名验证
前言 最近有给写一个开发接口给第三方用。也趁机学习了一下有关如果提供一个接口的验签的过程 也有参考到这篇文章:https://mp.weixin.qq.com/s/VJX6h2Fl_a5N3iCWe777nA 如何接口安全问题 需要解决3个问题: 请求身份是否合法? 请求参数是否被篡改? 请求是否唯一? 请求身份 为开发者分配accessKey(开发者标识,确保唯一)和secretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。 防止篡改 按照请求参数名的字母升序排列非空请求参数(包含Acces原创 2020-11-20 11:55:05 · 523 阅读 · 1 评论 -
spring cloud脚手架项目(十五)比简单责任链复杂一些的责任链实现
前言 之前有介绍过简易的责任链的实现方式,今天再介绍上一个责任链的升级版本 代码实现 通用接口类 public interface TestComponent { void execute(Context context); } 4个实现类 import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component public class OneTestCompone原创 2020-11-02 20:09:46 · 260 阅读 · 0 评论 -
spring cloud脚手架项目(十四)rocketmq使用事务消息
前言 最近有看分布式的事务相关的内容。之前有配置过XA模式的分布式事务。然后又刚好看了有关rocketmq的最终一致性的相关方案。决定实践一下 逻辑实现 1、A 系统先发送一个 prepared 消息到 mq,如果这个 prepared 消息发送失败那么就直接取消操作别执行了; 2、如果这个消息发送成功过了,那么接着执行本地事务,如果成功就告诉 mq 发送确认消息,如果失败就告诉 mq 回滚消息; 3、如果发送了确认消息,那么此时 B 系统会接收到确认消息,然后执行本地的事务; 4、mq 会自动定时轮询所有原创 2020-10-29 20:18:24 · 429 阅读 · 0 评论 -
spring cloud脚手架项目(十三)Fegin微服务应用之间请求追踪链路开发
前言 在之前的一篇文章中,我写了一个aop日志打印的功能,通过注解的实现,可以让接口直接打印出入参和出参,并且在日志上添加uuid。因为当服务器的请求很多的时候,会发现日志都挤在一起,自己都不知道这个日志信息对应的调用链路的情况了。 相关文章:spring cloud脚手架项目(五)日志模块之出入参数和日志链路追踪UUID 2 实现效果 上一篇文章的实现效果 [430c8ee7-6d34-4414-8ccc-9042c4cc340c][2020-10-23 22:14:24.948][http-nio-87原创 2020-10-23 23:09:03 · 207 阅读 · 0 评论 -
spring cloud脚手架项目(十二)简易责任链写法
说明 前面有一篇文章提到过一个设计模式,是工厂模式和策略模式的使用。在项目中非常的普遍。这次我要介绍的是责任链模式,这个模式也非常的常见。 逻辑介绍 假设我们需要做到一个订单下单,一般来说订单下单需要做到一层一层的检测。如果其中有一层检测错误,那就直接抛出下单失败。并且丢出错误信息即可。如果是一般的写法。那就是一个长代码if else 。如果校验规则越来越多。那么就可以使用责任链模式,把校验规则分开写,也会更加优雅。 话不多说。直接上代码 代码实现 核心类,用于策略启动 import org.springf原创 2020-10-21 23:22:35 · 332 阅读 · 1 评论 -
spring cloud脚手架项目(十一)logback配置
前言 之前有写到一个aop日志输出,当时没有做好相关的logback配置。前几个月在新公司给老系统升级的时候重写了一个好用的aop的logback的配置。对于spring boot 的logback配置的xml文件也有了很好的理解。这次接机说明一下。也为下一篇文章讲到链路之间的日志uuid的添加做准备 代码 以下就是详细的xml配置文件。每一行我都做了对应的注释和说明 <?xml version="1.0" encoding="UTF-8"?> <configuration scan="t原创 2020-10-20 23:54:18 · 406 阅读 · 0 评论 -
spring cloud脚手架项目(十)简单好用的上下文写法
前言 好久没更新之前的脚手架项目的文章了。其实我最近也写了蛮多的代码。在git记录里面可以看到,但是把demo转为实际的例子又需要一些语言表达,最近公司被迫9116,还没有补偿。也没什么心思写这个。最近准备重新准备一下面试,相对工作也会划水一点,打算把之前代码漏下的更新一下。 介绍 什么是上下文写法呢?想必在大家写代码的时候总会遇到,有一个逻辑特别复杂的代码。又是一线到底的逻辑,也不需要用到什么设计模式。但是就是复杂,判断多。一梭子写下来。一个方法500行。就想老太太的裹脚布,又臭又长。而且这种代码。刚写完原创 2020-10-19 22:42:04 · 347 阅读 · 1 评论 -
docker通过dockerfile构建spring boot项目
前言 最近在新公司有分享到有关docker的东西,自己最近也有重新学习了一些东西。之前对于dockerfile自己一直有一种畏惧的心态,虽然一直看得懂,但是就是有一种说不上来的不自信,也几乎不写dockerfile。然后刚好趁着这个机会重新整理一下docker有关的新的知识 前期准备 既然是要启动一个spring cloud的项目,那么自然需要准备一个eureka的,这边可以参照我之前搭建过的eureka项目 eureka搭建 dockerfile的一般使用 这个是我的eureka的docker启动的doc原创 2020-07-10 18:46:31 · 592 阅读 · 0 评论 -
spring cloud脚手架项目(九)各层模型Pojo转换工具类BeanCopyUtil
前言 编程中比较常见的问题就是controller层的DTO转为对应的数据操作层的DO。或者是在一系列service操作之后返回到controller层的DTO转换。或者是还需要把DTO转VO。 模型介绍 1、用户发出请求,表单的数据层被匹配为 VO 2、展示层把 VO 转换为服务层对应方法锁要求的 DTO,传输给服务层 3、服务层首先根据 DTO 的数据构造一个 DO,调用 DO 的业务方法完成具体业务 4、服务层把 DO 转换为持久层对应的 PO,调用持久层持久化方法,把 PO 传递给它完成持久化操作原创 2020-05-15 20:37:49 · 423 阅读 · 0 评论 -
spring cloud脚手架项目(八)nacos动态配置中心接入以及json配置
前言 上一篇我接入了rocketmq和redis,本次要接入的中间件是阿里的nacos,用于当做配置中心。关于nacos的安装可以参考我之前写过的docker 安装naocos的文件 介绍 nacos是阿里用于spring cloud体系下的一个突破吧,可以用作注册发现和配置中心,支持自动刷新配置,我个人更加喜欢他的自动刷新配置功能,比spring cloud 的config和bus的动态配置有更多用法。常见用法就是用于动态刷新配置。 举例:有一个项目由一个新功能上线。我也不确定这个功能是否好用,我需要及时原创 2020-05-13 10:14:51 · 4263 阅读 · 2 评论 -
spring cloud脚手架项目(七)redis和rocketmq接入
前言 上一篇讲到了工厂类和工厂类对应的使用。本篇则讲到了mq和redis的整合。在mysql负载不过来过多请求的时候,我们需要缓存,这时候就是redis登场的时候了。以及我们的请求需要削峰,降低请求压力。就需要mq,我们本地接入的是rocketmq rocketmq和redis的docker安装可以考察我之前的代码 参考博客: redis:https://www.cnblogs.com/L-Wirepuller/p/11150742.html rocketmq:https://juejin.im/post/原创 2020-05-13 10:14:00 · 655 阅读 · 0 评论 -
spring cloud脚手架项目(六)策略模式&工厂模式的使用以及二进制状态优化
前言 第5,6篇分别做了全局的异常处理和aop日志。这样我们的项目的通用逻辑的处理以及基本没有问题了。本篇讲的是一个工厂类的使用 参考博客: https://segmentfault.com/a/1190000022205403 https://blog.csdn.net/u013129944/article/details/64443054 背景 假设目前有一个需求,你需要在用户走完一串逻辑之后,对用户进行一个消息通知。方式可以是短信,微信,邮件,电话通知等等通知方式,那么应该怎么做? 很多人的回答可能就原创 2020-05-13 10:13:24 · 348 阅读 · 0 评论 -
spring cloud脚手架项目(六)spring boot全局异常捕获处理
前言 上一章我们说了全局的aop日志处理和追踪UUID日志打印。这一节讲的是全局的异常捕获。代码中再也不需要填入无数的try catch这种无效代码来进行异常捕获,去抛出,返回对应的Spring mvc结果。都可以通过这节的代码来解决 参考博客:https://www.cnblogs.com/xuwujing/p/10933082.html 代码 BaseException 自定义异常 public class BaseException extends RuntimeException { pri原创 2020-05-12 10:35:37 · 299 阅读 · 0 评论 -
spring cloud脚手架项目(五)日志模块之出入参数和日志链路追踪UUID
前言 之前4篇已经构建完成了一个基本的spring boot项目。换在我之前工作的时候,就是一个标准的SSM的Web项目了,已经可以配合数据库做一个单机Web后端服务器使用了。接下来需要开发的就是日志模块了。 参考博客: https://www.cnblogs.com/quanxiaoha/p/10789843.html https://blog.csdn.net/xubin320121/article/details/93857126 代码 自定义Aop注解 ParamsLog import java.l原创 2020-05-12 10:33:56 · 442 阅读 · 0 评论 -
spring cloud脚手架项目(四)mybaits+druid多数据+atomikos分布式事务
前言 本篇是我的spring cloud脚手架项目的第四篇。上篇讲的是feign接口。我们的spring boot项目已经可以做一个最基本的接口返回和微服务提供了。本篇讲的是所有项目常用的数据库相关配置的接入 参考博客: https://blog.csdn.net/u012702547/article/details/103029910 https://blog.csdn.net/m0_37809146/article/details/86673372 https://blog.csdn.net/ypp91原创 2020-05-11 20:38:55 · 391 阅读 · 0 评论 -
spring cloud脚手架项目(三)feign接口调用
前言 在结束技术选择和模块化项目搭建之后。我们的spring boot项目就可以启动了。这时候就需要聊到微服务的一个重大作用,RPC调用 文章参考: feign问题处理:http://www.imooc.com/article/289005 如何调用feign:https://segmentfault.com/a/1190000012496398 feign feign接口调用是spring cloud下常用的RPC调用,自带Spring Cloud Ribbon 与 Spring Cloud Hystri原创 2020-05-11 15:47:45 · 429 阅读 · 0 评论 -
spring cloud脚手架项目(二)模块化项目搭建以及maven分环境打包部署
前言 个人从17年毕业,算上实习等等经历,也是机缘巧合,对于从零开始搭建项目这件事情在每一家公司都经历过了。到今天为止,也算是有点心得。现在就讲一下我从零开始搭建一个微服务应用的理解。 模块化搭建 现在的应用项目,都是追求一个模块化的概念,恰巧idea这个写代码工具的项目管理也是模块化的,和现在的情况如出一辙,很利于项目的管理。我觉得也是lide流行的原因之一吧。 还有一个不得不提的就是maven的,他对于项目的构建非常重要,我在大学写java项目的时候,还需要自己去网上把jar包下载下来,完全不知道mav原创 2020-05-10 11:41:27 · 553 阅读 · 0 评论 -
spring cloud脚手架项目(一)技术选型
前言 目前因为有些原因。也是因为自己上一家项目使用了spring cloud的技术栈,所以希望能自己搭建一个spring cloud相关的项目脚手架,也是对之前干的事情的一个总结吧。写一个项目的第一步是需要进行技术选型和中间件选择,下面我会列出我这个项目中需要用到的技术和项目。 基本框架-spring cloud boot 微服务的大旗下面的目前的选择我所熟悉的只有dubbo和spring cloud的,如文章所言,所以我选择的是spring cloud版本,spring cloud和boot之前有一个对应原创 2020-05-09 11:43:16 · 1686 阅读 · 1 评论