Spring源码解读
从Spring的内部实现原理讲到Spring boot ,通过源码学习Spring 的编程思想,也记录学习的历程!
峡谷程序猿
这个作者很懒,什么都没留下…
展开
-
Dubbo2.7.6启动原理之Consumer
今天来研究dubbo服务中的第二个重要角色,服务的消费者Consumer。 顾名思义。消费者就是消费服务提供者Provider提供的服务的角色。它通过订阅Provider的服务注册信息。来远程调用Provider的服务。如下图所示:在spring boot应用中是如何进行相关的工作的。下面就来详细研究一下。首先还是研究Consumer的初始化流程,在dubbo与Spring整合时,会首先向S...原创 2020-05-07 18:57:05 · 601 阅读 · 0 评论 -
DispatcherServlet工作原理解析
近年来由于Spring Boot的流行。Spring MVC已经完全将Struts2框架淘汰。成为了Java Web应用主流的MVC框架。虽然一直在使用Spring MVC,也大致知道其工作原理,但是一直没有抽时间来全面的总结一下。今天就下个决心,结合最新版的Spring Boot2.3.0的源码来研究一下Spring MVC的核心原理之DispatcherServlet的工作流程。...原创 2020-06-09 15:50:43 · 2510 阅读 · 1 评论 -
Spring Cloud 2.2.0.RELEASE之Nacos配置中心原理解析
Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。在应用启动的时候,通过网络请求,从配置服务器上拉去项目的配置。这样可以集中管理项目的配置文件,并且可以保护项目中重要配置的安全。大致的流程如下:可以看到,配置中心的核心部分在与配置中心的实现。现在流行的配置中心有zookeeper,eureka,consul,apollo,nacos等等。其中zookeeper是没有管理界面。eureka配置界面功能太单一,且已经停止更新。也就是说实际项目中最好从剩下三个去选。这里原创 2020-07-22 10:31:32 · 1221 阅读 · 0 评论 -
Spring Boot 2.x整合Mybatis原理剖析
Mybatis是目前市面上使用的最多的ORM框架了,在Spring Boot项目中可以非常简单的集成。使用起来很简单,但是具体是怎么样集成的呢?这就来一探究竟!Mybatis官方文档mybatis-spring-boot-starter官方文档使用Mybatis的前提就是构建一个SqlSessionFactory实例。有两种方式:通过读取xml配置穿入一个Configuration对...原创 2020-04-18 13:33:40 · 438 阅读 · 0 评论 -
Mybatis3.5之拦截器Interceptor原理剖析
在Mybatis中可以使用拦截器在SQL执行之前进行一系列的自定义操作。比如数据的权限拦截,数据分页,数据执行时一些公共逻辑的植入等等。在讨论这个之前,需要了解Java的动态代理原理和责任链模式。下面继续从源码的角度来看Interceptor的实现原理,植入拦截器的核心逻辑在Configuration类中,这也是mybatis最为核心的配置类。public class Configuratio...原创 2020-04-22 11:27:09 · 1361 阅读 · 0 评论 -
Dubbo2.7.6之服务暴露流程
在上一篇文章Dubbo2.7.6启动原理之Provider中我已经探讨了dubbo服务启动的大致流程。可以看到,暴露服务逻辑在DubboBootstrap#exportServices()方法中。今天就来详细来探索一下暴露服务的实现细节。如下为服务暴露过程中的涉及到的主要组件:注意:一个服务可以同时以多种协议暴露一个服务可以同时注册在多个不同的注册中心每一个服务接口都会转换为对应的ServiceConfig实例如下是dubbo官方给出的服务暴露时序图:如下就是服务接口暴露过程中的转换逻原创 2020-05-09 16:42:43 · 1000 阅读 · 3 评论 -
Spring Boot 2.2.6.RELEASE原理剖析
Spring Boot 2.2.6.RELEASE原理剖析1 Spring boot的启动原理1.1 Spring Boot的启动原理1.1.1 jar方式启动功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数...原创 2020-04-01 23:50:45 · 4545 阅读 · 1 评论 -
Spring Boot之SpringFactoriesLoader原理剖析
SpringFactoriesLoader是Spring框架中的加载类的核心加载器,专门用来读取classpath下各个jar包里META-INF/spring.factories目录里面的配置。学习Spring Boot实现原理,这个必须得搞清楚!官方说明: General purpose factory loading mechanism for internal use within t...原创 2020-04-02 20:16:57 · 455 阅读 · 0 评论 -
Spring Boot2.2.2版本中使用MongoDB查询计算两个点之间的距离
因现项目需求,需要计算一下给定一个坐标,到某一个地点的之间的距离,任务是存放在MongoDB的对象。由于目前百度文档中都是老版本的,没有可用的样例,老夫只好去官方网站搜寻了,最终实现了这个需求。就立刻记录一下,也帮助一些接触到MongoDB计算坐标的新人。具体需求是:给一个坐标,一个地点的ID,地点都存在MongoDB,需要查询这个坐标到给定ID的地点之间的距离。Spring Boot 官方...原创 2020-01-03 17:57:56 · 1209 阅读 · 2 评论 -
Spring Boot之事件原理剖析
在spring boot的启动的源码中,可以在很多个地方看到事件的应用。事件的使用在启动中占有非常核心的地位。下面我们就透过源码来分析一下Spring Boot中是如何实现事件机制的。看这个之前如果不了解事件设计模式的。可以先去看一下事件模式的原理!先看一下在spring boot启动时是如何使用事件的public ConfigurableApplicationContext run(S...原创 2020-04-15 19:43:34 · 495 阅读 · 1 评论 -
Spring Cloud之服务注册和发现的原理解析
在Java微服务越来越火的今天。几乎什么公司都在搞微服务。而使用的比较多的就是Spring Cloud技术栈。今天就来研究一下Spring Cloud中服务注册与发现的基本原理。如下是Spring Cloud官方给的微服务架构图:今天就要研究service registry模块。大致流程如下:服务注册主要包含以下几个问题:服务注册服务续约服务下线服务失效删除对于服务注册与发现Spring Cloud官方也给出了标准的接口DiscoveryClient(服务发现) ,ServiceRe原创 2020-08-03 19:21:03 · 3170 阅读 · 0 评论 -
Spring中对于循环依赖(Circular dependencies)的处理
Spring框架最核心的特点就是控制反转和依赖注入。控制反转的意思就是将创建对象的动作(new Class())交给Spring容器处理。接下来就是依赖注入。当spring容器创建一个对象时。如果对象中存在一些需要赋值属性。它会自动帮我们将对应的属性的值注入进去。遮掩就能得到一个完整的对象实例。今天主要讨论spring容器在依赖注入时。对循环依赖的处理。依赖注入的流程① 使用描述所有 bean 的配置元数据创建和初始化。配置元数据可以通过 XML、Java 代码或注释指定。ApplicationCo原创 2020-07-24 18:04:29 · 1953 阅读 · 0 评论