ICode9

精准搜索请尝试: 精确搜索
  • 枚举实现单例模式2022-06-14 17:35:44

    枚举是单例实现中唯一一种不会被破坏的单例实现模式 public class SingletonObject { private SingletonObject() { } private enum Singleton { INSTANCE; private final SingletonObject instance; Singleton() { instance

  • spring的依赖循环--记录一次工作时的偶遇2022-01-18 23:05:35

    目录 一、问题 二、代码查看 三、如何解决循环依赖? 注:如果文章出现错误,请大佬们指正,共同学习下,谢谢 一、问题 一天同事和我说我们的项目发生了循环依赖,把我给震惊到了,直呼:666 然后默默的翻日志查看是什么的问题   关于循环依赖,相信大家都是非常熟悉的,A依赖B,B又依赖A,它们之

  • Spring框架源码干货分享之三级缓存和父子工厂2021-12-16 12:31:54

    记录并分享一下本人学习spring源码的过程,有什么问题或者补充会持续更新。欢迎大家指正! 环境: spring5.X + idea 建议:学习过程中要开着源码一步一步过 Spring中对象的创建宏观流程: 创建对象需要的基础数据:beanDefinition 在BeanFactory中getBean时做一下三步处理完成对象的创

  • Spring 循环依赖2021-03-26 14:33:59

    Spring —— 循环依赖 Spring Bean默认都是以单例的形式存在,但是也支持prototype形式,这里主要介绍单例Bean。 示例 @Component public class X { @Autowired private Y y; public X() { System.out.println("X construct..."); } } @Component pu

  • Spring三级缓存2021-03-11 14:36:25

    一、Spring三级缓存的作用?   解决对象之间的依赖问题 public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry { //1级缓存 用于存放 已经属性赋值 初始化后的 单列BEAN private final Map<String, Object

  • Spring之为什么要用三级缓存2020-12-04 20:01:27

      刚才看了手机上的公众号,看到一个问题,Spring为什么会有三级缓存,只用两级缓存行不行   结论当然是不行,毕竟做Spring的又不是傻蛋,大师考虑问题那可是很深远的 addSingletonFactory(beanName, new ObjectFactory<Object>() { @Override public

  • Spring原理(二)--循环依赖原理2020-11-28 19:01:05

    此篇文章建立在已经了解bean创建原理之上,若不了解,请先阅读本人上一篇文章 Spring原理(一)–IOC原理 1 场景 @Component public class X { @Autowired Y y; public X(){ System.out.println("X"); } } @Component public class Y { @Autowired

  • 3.4 spring5源码系列--循环依赖的设计思想2020-11-15 06:00:44

    前面已经写了关于三篇循环依赖的文章, 这是一个总结篇 第一篇: 3.1 spring5源码系列--循环依赖 之 手写代码模拟spring循环依赖 第二篇: 3.2spring源码系列----循环依赖源码分析 第三篇: 3.3 Spring5源码---循环依赖过程中spring读取不完整bean的最终 现在总结循环依赖的思想

  • 3.3 Spring5源码---循环依赖过程中spring读取不完整bean的最终解决方案2020-11-14 08:32:22

    根据之前解析的循环依赖的源码, 分析了一级缓存,二级缓存,三级缓存的作用以及如何解决循环依赖的. 然而在多线程的情况下, Spring在创建bean的过程中, 可能会读取到不完整的bean. 下面, 我们就来研究两点: 1. 为什么会读取到不完整的bean. 2. 如何解决读取到不完整bean的问题.  

  • 并发编程,高速缓存,原子操作,指令重排序2020-05-14 21:58:10

    所谓并发编程,所谓有其三   一、高速缓存的两面性 cpu->高速缓存->内存 高速缓存:平衡cpu和内存之间的速度差异,变量从内存首先加载到高速缓存然后以供cpu计算使用。 对于同一个cpu来说,存储于其高速缓存中的变量,对于使用其时间碎片的线程来说,都是原子可见的,任何的变更都能及时的

  • 所谓变量可见性,所谓有其三2020-05-10 13:52:10

    一、高速缓存的两面性 cpu->高速缓存->内存 高速缓存:平衡cpu和内存之间的速度差异,变量从内存首先加载到高速缓存然后以供cpu计算使用。 对于同一个cpu来说,存储于其高速缓存中的变量,对于使用其时间碎片的线程来说,都是原子可见的,任何的变更都能及时的感知到其所被使用的线程。 但是

  • spring源码(三)--spring循环引用源码学习2019-11-09 20:02:34

    在spring中,是支持单实例bean的循环引用(循环依赖)的,循环依赖,简单而言,就是A类中注入了B类,B类中注入了A类,首先贴出我的代码示例 1 @Component 2 public class AddressVO { 3 4 @Autowired 5 private UserVO userVO; 6 } 7 8 9 @Component 10 public class UserVO

  • spring 循环依赖和生命周期2019-07-31 15:43:12

     本文主要说的是Spring是如何解决bean循环依赖的问题,循环依赖和生命周期交织在一起的。 生命周期图:     Spring容器初始化时会读取 我们配置bean的信息。然后再一个一个的创建: DefaultListableBeanFactory.class: public void preInstantiateSingletons() throws Be

  • spring 循环依赖的一次 理解2019-07-28 22:00:09

    前言:   在看spring 循环依赖的问题中,知道原理,网上一堆的资料有讲原理。 但今天在看代码过程中,又产生了疑问。 疑问点如下: // 疑问点: 先进行 dependon 判断String[] dependsOn = mbd.getDependsOn();if (dependsOn != null) { for (String dep : dependsOn) { if (isDepe

  • IOC doGetBean 方法解析2019-05-25 16:54:11

    protected <T> T doGetBean( final String name, final Class<T> requiredType, final Object[] args, boolean typeCheckOnly) throws BeansException { final String beanName = transformedBeanName(name); Object be

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有