随笔分类 -  Spring全家桶

摘要:背景 最近在项目上遇到个问题。项目就是普通的spring cloud,spring cloud在spring boot的基础上多了一些东西,比如支持bootstrap上下文(通过bootstrap.yml/properties配置)。另外呢,我们这边要求上线的时候,要把配置文件里的敏感配置如密码,进 阅读全文
posted @ 2024-02-04 19:06 三国梦回 阅读(688) 评论(2) 推荐(0) 编辑
摘要:背景 在feign中,一般是通过eureka、nacos等获取服务实例,但有时候调用一些服务时,人家给的是ip或域名,我们这时候还能用Feign这一套吗? 可以的。 有两种方式,一种是直接指定url: 这种是服务端自己会保证高可用、负载均衡那些。 但也可能对方给了多个url(一般不会这样,但是在ap 阅读全文
posted @ 2024-01-21 16:39 三国梦回 阅读(383) 评论(0) 推荐(1) 编辑
摘要:背景 我们上一篇介绍了feign调用的整体流程,在@FeignClient没有写死url的情况下,就会生成一个支持客户端负载均衡的LoadBalancerClient。这个LoadBalancerClient可以根据服务名,去获取服务对应的实例列表,然后再用一些客户端负载均衡算法,从这堆实例列表中选 阅读全文
posted @ 2024-01-20 18:43 三国梦回 阅读(437) 评论(0) 推荐(0) 编辑
摘要:背景 经过前面几篇的理解,我们大致梳理清楚了FeignClient的创建、Feign调用的大体流程,本篇会深入Feign调用中涉及的另一个重要组件:loadbalancer,了解loadbalancer在feign调用中的职责,再追溯其是如何创建的。 在讲之前,我先提个重点,本文章的前期是引用了na 阅读全文
posted @ 2024-01-14 15:10 三国梦回 阅读(647) 评论(0) 推荐(0) 编辑
摘要:背景 前面几篇分析了Feign的初始化过程,历经艰难,可算是把@FeignClient注解的接口对应的代理对象给创建出来了。今天看下在实际Feign调用过程中的一些源码细节。 我们这里Feign接口如下: @FeignClient(value = "echo-service-provider") / 阅读全文
posted @ 2024-01-11 21:44 三国梦回 阅读(394) 评论(0) 推荐(0) 编辑
摘要:背景 前面两篇讲了下,在一个典型的引入了feign、loadbalancer、nacos等相关依赖的环境中,会有哪些bean需要创建。 其中第一篇讲了非自动配置的bean,第二篇是自动配置的bean。第一篇中提到,@FeignClient这个注解,就会创建一个beanDefinition,类型为Fe 阅读全文
posted @ 2024-01-07 16:55 三国梦回 阅读(325) 评论(0) 推荐(0) 编辑
摘要:背景 上一篇介绍了Feign源码初始化的一部分,内容主要是,@EnableFeignClients、@FeignClient这些注解,都支持设置一些自定义的配置类: A custom @Configuration for all feign clients. Can contain override 阅读全文
posted @ 2023-12-23 22:56 三国梦回 阅读(353) 评论(0) 推荐(0) 编辑
摘要:前言 打算系统分析下Feign的代码,上一篇讲了下Feign的历史,本篇的话,先讲下Feign相关的beanDefinition,beanDefinition就是bean的设计图,bean都是按照beanDefinition来制造的。 Feign相关的bean不少,有一些是因为我们的Feign相关注 阅读全文
posted @ 2023-12-16 21:23 三国梦回 阅读(566) 评论(1) 推荐(4) 编辑
摘要:背景 本意是想写个feign中loadbalancer组件和nacos相遇后,一个兼容相关的问题,后面发现Feign这套东西很深,想一篇文章写清楚很难,就先开一篇,讲历史。 Feign、OpenFeign、Spring Cloud OpenFeign Feign Feign是Java生态中的一个库, 阅读全文
posted @ 2023-12-14 22:33 三国梦回 阅读(824) 评论(0) 推荐(1) 编辑
摘要:背景 组内人不少,今年陆陆续续研发了不少系统,一般都会包括一个后台管理系统,现在问题是,每个管理系统都有RBAC那一套用户权限体系,实在是有点浪费人力,于是今年我们搞了个统一管理各个应用系统的RBAC的系统,叫做应用权限中心,大致就是: 各个应用在我们系统注册,并录入应用支持的各类权限(如菜单权限、 阅读全文
posted @ 2023-11-20 22:18 三国梦回 阅读(3515) 评论(12) 推荐(11) 编辑
摘要:ribbon中,发现一段比较有水平的代码 简介 有个类,com.netflix.loadbalancer.PollingServerListUpdater,主要功能是,获取服务的instance列表。 这也是ribbon中的核心代码。 public class PollingServerListUp 阅读全文
posted @ 2020-06-29 20:29 三国梦回 阅读(940) 评论(0) 推荐(0) 编辑
摘要:前言 这篇其实是对一年前的一篇文章的补坑。 @Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码 当时,就是在spring mvc应用里定义一个api,然后api里,进行如下定义: /** * 远程debug,读取参数中的class文件的路径, 阅读全文
posted @ 2020-05-29 16:58 三国梦回 阅读(1752) 评论(0) 推荐(1) 编辑
摘要:背景 在我们的项目中,比较广泛地使用了ThreadLocal,比如,在filter层,根据token,取到用户信息后,就会放到一个ThreadLocal变量中;在后续的业务处理中,就会直接从当前线程,来获取该ThreadLocal变量,然后获取到其中的用户信息,非常的方便。 但是,hystrix 这 阅读全文
posted @ 2020-05-09 17:39 三国梦回 阅读(2413) 评论(0) 推荐(1) 编辑
摘要:曹工杂谈:我们的应用,启动就要去其他服务拉数据,那其他服务挂了,我们就起不来了? 前言 在大家的项目中,想必都有那种,启动时候要去其他服务拉一些数据的情况,如果我们启动时,其他服务没启动,按岂不是就起不来了吗,如果这段拉数据的代码,并不是核心业务,那你这就有点说不过去了:不能因为对方没启动,我们也不 阅读全文
posted @ 2020-04-10 09:57 三国梦回 阅读(1088) 评论(4) 推荐(2) 编辑
摘要:前言 前一阵开发过程遇到的问题,用的 发送消息,消息body里的时间是比当前时间少了8小时的,这种一看就是时区问题了。 就说说为什么出现吧。 之前的配置是这样的: 要发送出去的消息vo是这样的: 然后,出现的问题就是,消息体里,时间比当前时间少了8个小时。 {"testDate":"2019 12 阅读全文
posted @ 2019-12-27 14:47 三国梦回 阅读(2086) 评论(0) 推荐(1) 编辑
摘要:前言 昨天,我开发的代码,又收获了一个bug,说是界面上列表查询时,正常情况下,可以根据某个关键字keyword模糊查询,后台会去数据库 %keyword%查询(非互联网项目,没有使用es,只能这样了);但是,当输入%字符时,可以模糊匹配出所有的记录,就好像,好像这个条件没进行过滤一样。 原因很简单 阅读全文
posted @ 2019-12-14 00:09 三国梦回 阅读(3774) 评论(1) 推荐(2) 编辑
摘要:前言 问:标题说的什么意思? 答:简单说,一个spring boot应用(我这里,版本升到2.1.7.Release了,没什么问题),默认使用了tomcat作为底层容器来接收和处理连接。 我这里,在依赖中排除了tomcat,使用Netty作为了替代品。优势在于,启动飞快,线程数量完全可控(多少个ne 阅读全文
posted @ 2019-12-10 17:16 三国梦回 阅读(12018) 评论(4) 推荐(2) 编辑
摘要:前言 最近在项目中做了一项优化,对业务代码进行解耦。我们部门做的是警用系统,通俗的说,可理解为110报警。一条警情,会先后经过接警员、处警调度员、一线警员,警情是需要记录每一步的日志,是要可追溯的,比如报警人张小三在2019-12-02 00:02:01时间报警,接警员A在1分钟后,将该警情记录完成 阅读全文
posted @ 2019-12-03 18:08 三国梦回 阅读(2054) 评论(1) 推荐(1) 编辑
摘要:前言 最近发了好几篇,都是覆盖框架源码,但是spring的代码,我是从没覆盖过,毕竟,如果方便扩展,没谁想去改源码,而spring就是不需要改源码的那个,真的是“对扩展开放,对修改关闭”的典范。 就我说曾经用过的,spring的扩展点,就包括了 、`beanFactoryPostProcessor 阅读全文
posted @ 2019-11-12 23:18 三国梦回 阅读(1655) 评论(0) 推荐(0) 编辑
摘要:一、前言 最近有个需求,其实这个需求以前就有,比如定义了一个vo,包含了10个字段, 在接口A里,要返回全部字段; 但是在接口B里呢,需要复用这个 vo, 但是只需要返回其中8个字段。 可能呢,有些同学会选择重新定义一个新的vo,但这样,会导致vo类数量特别多;你说,要是全部字段都返回吧,则会给前端 阅读全文
posted @ 2019-11-10 09:26 三国梦回 阅读(1231) 评论(0) 推荐(2) 编辑