- 博客(65)
- 收藏
- 关注
原创 Nacos源码之服务拉取(RestTemplate)
可以看到最底层的发送请求的逻辑还是交给了。来做,我们之前服务注册的底层也是它来负责的。 从代码也可以看出,拉取服务的入口就是。 可以看到拉取服务实例的核心逻辑在。是一个接口,这里是它的一个实现类。会将发送拉取服务的请求委托给了。
2025-06-28 14:47:32
469
原创 Spring依赖注入源码学习:基于注解的DI源码解析
当搭建SpringBoot或者SpringCloud的项目时,几乎不再使用XML文件的方式定义bean加载和依赖注入的方式,通常使用注解@Autowired和@Resource的来注入指定的bean。 Spring本身也支持基于注解的依赖注入,只需要在XML文件中引入新的命名空间::指定Spring要扫描的包路径。。 省流版如下: 加了命名空间后,Spring的类会去加载指定下的被相关注解修饰的bean,例如被@Component注解及其衍生注解@Service修饰的bean。
2025-06-21 17:47:03
993
原创 Nacos服务注册源码分析(基础版)
前面的博客中我们已经介绍了如何在Spring Cloud引入Nacos,接下来我们来看看如何手动去注册一个服务,以及服务注册的底层逻辑。
2025-01-24 11:26:55
1499
原创 Nacos源码本地运行及相关问题(windows)
这是因为nacos在1.4.1版本之后采用了protobuf,protobuf是google团队开发的用于高效存储和读取结构化数据的工具。这个包是由protobuf在编译时自动生成。所以上述缺失的代码在编译时自动生成的,所以需要优先使用maven编译将它们生成出来。
2025-01-24 11:09:19
606
原创 ArrayList并发修改异常:ConcurrentModificationException
背过八股的同学应该知道,增强for循环里面直接对数组进行remove/add容易出现并发修改异常,Java数组(ArrayList)会维护一个修改次数的属性()和其内部类Itr的属性,每次从数组中取元素时会校验这两者是否相等,如果不相等就会抛出。 这段代码在遍历数组的同时修改了数组,结果是运行成功,移除了第一个元素"1",并未抛出异常。
2025-01-21 11:30:15
832
原创 Nacos源码之服务注册(SpringCloud版)
配置端口号,不能与已启动服务的端口号重复: 启动新配置好的服务: 此时Nacos上服务如下,可以看到有两个。
2025-01-01 16:30:02
794
原创 SpringCloud启动源码分析
在前面的博客中我们已经详细分析过Spring的启动源码,包括beanDefinition的加载、bean的初始化以及各种后处理器的回调,这个过程还是比较复杂的。 作为Spring全家桶中的一员,SpringCloud也是对Spring做的封装,底层逻辑其实一致,我们先来看看SpringCloud的入口方法: 我们直接去看看的方法,根据调用形式可以看到这里调用的是的静态方法: 这部分的代码逻辑是:先创建一个对象,然后调用这个对象的的方法。的构造方法和它的非静态方法。
2024-12-15 18:58:58
1272
原创 SpringCloud和Nacos的基础知识和使用
1.注册中心Euraka(国内用的较多的是Nacos):负责服务注册和发现。2.负载均衡Ribbon:负责服务实例的选择(同一个服务可能部署在多个服务器上)。3.远程调用Feign:通过HTTP请求调用其他服务的接口。4.熔断器Hystrix:容错管理工具,用于处理分布式系统中的延迟和故障。5.API网关Zuul:用于路由、过滤和负载均衡。1.服务注册:只有一个服务注册到注册中心,才可能被其他服务发现并调用;2.服务发现:即一个服务通过注册中心发现了其他服务。
2024-12-14 19:18:34
982
原创 Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation
之前我们有讲过如何使用Jpype调用jar包,在成功调用jar包后,接着在Pytest框架下编写自动测试用例。但是在Pytest下使用Jpype加载jar包,并调用其中的方法会以下提示信息: 虽然提示信息显示有Windows显示致命错误,但是并不会影响最后的测试用例是否会通过。但是每次运行Pytest测试函数时,都会有这样的信息看着很难受。
2024-11-26 19:13:35
1286
原创 Jpype调用jar包
公司要求使用python对接口做自动化测试,接口的实现是Java,部分接口需要做加解密,因此需要使用python来调用jar包来将明文加密成密文,然后通过http请求访问接口进行测试。
2024-11-25 21:32:13
1582
原创 Spring源码学习(一):Spring初始化入口
作为一个刚步入职场的小白,对Spring(SpringBoot)的了解只停留在会用,并未对其内部的原理有过学习。在公司导师的指导下,开始进一步学习Spring的源码,毕竟Spring源码是Spring全家桶的基础,学习了源码对Spring其他框架也能更好上手。 由于本人的基础并不太好,因此文章中有错误的地方欢迎指出。
2024-11-24 15:54:25
2515
4
原创 Spring源码学习(五):Spring AOP
方法内部会根据不同通知的类型创建不同类型的beanDefinition,然后设置beanDefinition中的属性值。特殊的是,方法内部还会设置构造器参数: 我们进入到方法内部可以看到,不同通知类型对应着不同类型的class: 从类的继承关系来看,这五个通知类型都继承至 我们先来看看实现了哪些接口,可以看到这些接口在我们Spring初始化启动源码分析时都有讲到过,特别是这个超级接口,我们会回调里面的方法干很多事情。 获取当前bean的自定义目标源。如果获取到了。
2024-11-05 20:16:15
1636
原创 Spring源码学习(四):component-scan加载beanDefinition
方法会解析XML文件,将其解析成一个文档树(主要是靠),继续调用的会遍历这个文档树中的节点,对符合条件的节点进行解析,得到BeanDefinition。 所以委托给又进一步委托给。 我们最终得到的beanDefinition是类型的,该类型是的实现类,也是的子类。因此会走那两个if逻辑。1.根据标签的命名空间找到对应的命名空间处理器;2.根据命名空间处理器找到当前标签的解析器;3.创建并配置一个扫描器,加入包含和排除哪些注解;4.找到符合条件的候选Bean;
2024-11-02 13:12:46
1039
1
原创 Spring源码学习(三):finishBeanFactoryInitialization
beanFactory在经过一系列配置后可以开始真正的加载Bean,从这篇开始主要是讲述Bean的实例化过程。
2024-11-02 12:52:46
926
原创 Spring源码学习(二):prepareBeanFactory准备Bean工厂、回调BeanFactoryPostProcessor、注册BeanPostProcessor
Spring在启动后,方法中容器会注销已有的beans,关闭已有的beanFactory,创建一个新的beanFactory,然后获得所有的Bean定义(基于注解或者基于XML文件)。这一步其实还未实例化任何Bean,只是取得了beanDefinitions,这一篇主要讲解在获得beanDefinitions到真正开始实例化这些beans中间,Spring容器会干的一些事情。是Spring提供的一个扩展接口,Spring中大部分功能都是通过后处理器的方式进行扩展的。
2024-11-02 12:35:12
1111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅