avatar
文章
36
标签
5
分类
8

首页
时间轴
标签
分类
清单
  • 音乐
  • 电影
友链
关于
zeofuns
首页
时间轴
标签
分类
清单
  • 音乐
  • 电影
友链
关于

zeofuns

Spring源码分析(2)-DI 依赖注入过程分析
发表于2020-08-01|Spring
DI 注入时序图整个注入过程可以分成 2 个阶段 实例化:创建对应的 bean 依赖注入:将 bean 的相关依赖注入到实例中 入口分析 如果没有设置 lazy-init=false,那么 spring 默认会在第一次调用 bean 的时候才初始化 bean,所以入口在 beanFatcory 接口的 getBean 方法中。 如果设置了 lazy-init=false,那么 spring 会在容器启动的时候直接初始化。在上一篇分析 IOC 初始化的时候,容器在初始化的时候都会调用 refresh 方法,在 refresh 方法中有一个 finishBeanFactoryInitialization 方法,这个就是直接初始化 bean 的入口,而在 finishBeanFactoryInitialization 方法内部其实也是调用 BeanFactory 的 getBean 方法来生成 bean 的 源码分析调用 BeanFatory 的 getBean 方法->AbstractBeanFactory 的 getBean 方法的具体实现->调用 Abstr ...
Spring源码分析(1)-IOC容器初始化过程分析
发表于2020-07-31|Spring
首先给出 IOC 容器初始化的时序图这里以 ClassPathXmlApplicationContext 为例子,加载 xml 文件中的对象。 大致流程分为 3 个步骤,定位,加载,注册 定位:定位 xml 所在位置 加载:将 xml 中的元素转化成 Resource 对象,加载对应的节点元素 注册:将 Resource 对象转化成 Document 对象,然后注册到 BeanDifinittion,保存到容器 beanDefinitionMap 中 实际分析过程 首先我们在加载一个 xml 配置文件的时候,会使用以下方式,所以我们以 ClassPathXmlApplicationContext 这个容器作为示例 123public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); } 可以看出,我们是通过构造方 ...
SpringCloud-Gateway的使用
发表于2020-06-03|SpringCloud
SpringCloud-gateway 的使用初步使用 引入依赖 gateway 是一个独立的 web 服务器,他使用的是 netty 的服务器,所以我们的项目不能包含 spring-boot-starter 依赖。为了避免被继承依赖,所以我们新建一个项目,自建依赖。 12345678910111213141516171819202122232425262728293031323334353637<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
SpringCloud-Eureka的使用
发表于2020-05-28|SpringCloud
Eureka 的使用单机版 Eureka 注册中心注册中心 新建一个 spring-cloud-eureka 项目,用作注册中心 引入依赖 12345678910111213141516171819202122232425262728293031323334353637 <properties> <java.version>11</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.0.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR4</spring ...
SpringCloud-Config的使用
发表于2020-05-22|SpringCloud
Config 的使用Config Server 创建 git 项目,创建一级目录 config(可以不创建,这里是为了区分路径)。增加配置文件 order-service-dev.yml order-service-test.yml order-service.yml order-service 为使用 config 客户端的项目名称,后缀为 profile-环境 1234567891011121314order-service.ymldev: prodorderId: bbbborder-service-dev.ymlenv: devorderId: aaaaorder-service-test.ymlenv: testorderId: ccc 引入依赖 1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId></dependency> ...
SpringCloud-Openfegin 源码分析
发表于2020-05-17|SpringCloud
Openfegin 源码分析在使用 fegin 的过程中,最重要的一点就是在 application 中增加@EnableFeignClients,来启用 feign。 我们来看看这个注解的声明。 1234567@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients { ...} 在这个注解中,主要是通过 import 动态装载了 FeignClientsRegistrar 类,这个就是 spring 的动态装载 registrar 的实现,我们来看看 FeignClientsRegistrar 的具体实现 123456@Overridepublic void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) & ...
集合源码分析-线程安全的list
发表于2020-05-15|JDK
Vector 与 ArryaList 的差异 增加了一个可以控制扩容增量的构造方法 12345678public Vector(int initialCapacity, int capacityIncrement) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; this.capacityIncrement = capacityIncrement;} 修改了默认扩容机制 123456789101112private void grow(int minCapacity) { // overf ...
集合源码分析-List
发表于2020-05-14|JDK
集合继承关系图 属性12345678910111213141516171819202122232425262728293031323334353637/** * Default initial capacity. * 容器默认大小 */private static final int DEFAULT_CAPACITY = 10;/** * Shared empty array instance used for empty instances. * 当数组的长度被指定为0的时候,elementData使用当前属性 * 有参构造方法,在长度为0 的时候,指向当前数组 */private static final Object[] EMPTY_ELEMENTDATA = {};/** * Shared empty array instance used for default sized empty instances. We * distinguish this from EMPTY_ELEMENTDATA to know how much to inflate ...
SpringCloud-OpenFegin的使用
发表于2020-05-13|SpringCloud
OpenFegin 的使用自定义接口 引入 jar 包 12345<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.2.3.RELEASE</version></dependency> 增加注解,在 application 增加注解@@EnableFeignClients,启用 feign 配置服务地址 123# 配置指定服务的提供者的地址列表order-service.ribbon.listOfServers=\ localhost:8188 因为是继续 ribbon 的学习,所以会使用一些 ribbon 的配置。 创建接口 123456@FeignClient("spring-cloud-order-service")public interface Or ...
Springboot-整合Ribbon
发表于2020-03-26|SpringBoot
SpringBoot 整合 Ribbon使用 LoadBalanceClient 引入 jar 包 12345 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.2.3.RELEASE</version></dependency> 注意 springboot 版本和 jar 包版本差异问题 配置负载 12spring-cloud-order.ribbon.listOfServers=\ localhost:8180,localhost:8181 业务使用 1234567891011121314151617181920212223242526@RestControllerpublic class TestController { @Aut ...
1234
avatar
zerofuns
当下即是彼岸
文章
36
标签
5
分类
8
Follow Me
公告
起风了
最新文章
线程池内存溢出2021-06-06
Redis底层学习-Sentinel实现高可用2021-06-02
Redis底层学习-数据库相关2021-05-29
数据库全盘扫描导致的内存溢出2021-05-14
Redis底层学习-多机数据库2021-05-14
分类
  • JDK2
  • Mybaties2
  • Redis7
  • Spring4
  • SpringBoot4
  • SpringCloud5
  • record5
  • 多线程6
标签
CopyOnWriteArrayList List Vector 源码分析 集合
归档
  • 六月 20212
  • 五月 20213
  • 四月 20212
  • 三月 20213
  • 二月 20211
  • 一月 20211
  • 十月 20204
  • 九月 20202
网站资讯
文章数目 :
36
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2021 By zerofuns
框架 Hexo|主题 Butterfly