YaPiBlog


You look look you one day day de

SpringBoot源码系列之Bean实例化解析

Bean的实例化主要在refresh流程的finishBeanFactoryInitialization方法中 Bean的实力化操作主要是对BeanDefinition的操作 什么是BeanDefinition呢? 一个对象在Spring中描述,RootDefinition是其常见实现 通过操作BeanDefinition来完成bean实力化和属性注入 总结 介绍...

SpringBoot源码系列之Refresh方法解析

方法主要作用 bean配置读取 spring框架启动流程 refresh方法 refresh方法是SprintBoot启动的一个重要步骤,其中包含了很多独立的方法 prepareRefresh 在这个方法中,会进行如下设置: 容器状态设置,比如启动时间 初始化属性设置,比如业务监听器 检查必备属性是否存在 必备属性的设置: 系统初始化器中设置 @Ord...

SpringBoot源码系列之bean

IOC思想 将组建对象的控制权从代码本身转移到外部容器。使用的时候在需要引入的类依赖注入使用。 可以达到松耦合、灵活、可维护的好处。 bean的配置方式有两种 xml方式,可使用注解@ContextConfiguration(“classpath:xxx”)指定xml位置. (配置相对集中,清晰,但是复杂度提升) 注解的方式. (配置分散,对象关系不清晰,修改过后需要重新打包部...

SpringBoot源码系列之系统初始化器总结

类型问题 介绍下SpringFactoriesLoader ? SpringFactoriesLoader如何加载工厂类 ? 通过加载指定路径下的文件,构建properties对象,并获取相应配置的对象的全类名,然后生成对应的对象。 然后根据配置的order设置执行的顺序。 系统初始化器的作用? 它其实所以SpringBoot的一个回调接口,用来像SpringBoot容器中注...

SpringBoot源码系列之监听器

概要 监听器,字面上的理解就是监听观察某个事件(程序)的发生情况,当被监听的事件真的发生了的时候,事件发生者(事件源) 就会给注册该事件的监听者(监听器)发送消息 监听器要素 事件 监听器 广播器 触发机制 在SpringBoot中的实现 监听器 ApplicationListener // 声明此类只有一个方法 @FunctionalInterface ...

SpringBoot源码系列之系统初始化器原理

概要 用来加载系统初始化器 框架内部使用的通用工厂加载机制 从classpath下多个jar包特定的位置读取文件并初始化类 文件内容必须是kv形式,即properties类型 key是全限定名(抽象类|接口)、value是实现,多个实现用都好分割 加载实现源码 spring.factories 系统初始化器加载过程 它的初始化在框架初始化过程中 Spri...

SpringBoot源码系列之系统初始化器实战

概要 系统初始化器介绍 SpringFactoriesLoader介绍 系统初始化器原理解析 系统初始化器介绍 系统初始化器介绍在SpringBoot中的类名是ApplicationContextInitializer。它是Spring容器 刷新之前执行的一个回调函数。它能够向SpringBoot容器中注册属性。可以通过继承接口自定义实现。 也就是说,它其实是Sprin...

SpringBoot源码系列之启动流程概览

启动 SpringBoot通过启动类,运行main方法启动主要语句为 public static void main(String[] args) { SpringApplication.run(Sb2Application.class, args); } run方法内部,主要有两个重要的事项 调用相关配置,生成SpringApplication对象 调用Sprin...

SpringBoot源码系列之搭建流程对比

Java8新特性 Lambda表达式 stream操作 接口默认&静态方法 方法引用 重复注解 类型注解 日期&时间API base64加解密API 数组并行操作 JVM新增元空间 SSM搭建流程 引入相关jar包 编写web.xml(主要配置spring容器) 配置applicationContext.xml ...

Python系列(十四)复用、协程、asyncio

IO复用方式 import socket from urllib.parse import urlparse from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE selector = DefaultSelector() # 使用select完成http请求 class Fetcher: # 连接成功 ...