Spring IOC——循环依赖

循环依赖概述

什么是循环依赖?循环依赖是指A类依赖B类,B类也依赖A类,比如:

1
2
3
4
5
6
class A{
public B b;
}
class B{
public A a;
}

在不使用Spring时,这是一种很常见的现象,循环依赖完全没有问题。但是当我们使用Spring管理系统中所有bean时,循环依赖就会出现一些问题。要想研究这个问题,我们需要先了解Spring中是如何获取bean的,也就是getBean()方法。

阅读更多...

Spring IOC——Bean实例化

Bean的获取

  • 解析bean的真正name,如果bean是工厂类,name前缀会加&,需要去掉

  • 无参单例先从缓存中尝试获取

  • 如果bean实例还在创建中,则直接抛出异常

  • 如果bean definition 存在于父的bean工厂中,委派给父Bean工厂获取

  • 标记这个beanName的实例正在创建

  • 确保它的依赖也被初始化

  • 真正创建

    • 单例时
    • 原型时
    • 根据bean的scope创建
阅读更多...

Java垃圾回收

1 回收哪些内存

垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。

阅读更多...

Java字节码文件

1 概述

计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码。这个编译后的java代码,就是本文要介绍的java字节码。

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

阅读更多...

一句话总结各种设计模式

  1. 单例模式:系统中只实例化一个对象,通过类的getInstance()方法该实例,常用于线程池、连接池、日志对象等等。

  2. 工厂模式:创建与使用分离,把对象实例化的工作交给工厂来作,用户不需要关心对象如何生成的,需要某个对象时,向工厂申请一个即可。

    • 简单工厂:定义一个工厂类,里面有一个createProduct()用于创建对象。实现简单,但是扩展困难,工厂类单一,职责过重。
    • 工厂方法:不再由工厂类创建对象,而是将该任务转嫁给工厂类的各个子类来完成,由子类来决定该实例化哪一个类。
    • 抽象工厂:将多个抽象工厂方法封装到一起,用于生产一系列相关对象(核心功能),这些对象组合在一起是一个更大的产品。比如讲生产CPU的工厂方法和生产内存的工厂方法封装到一起,组成生产电脑的工厂。
    阅读更多...
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信