• Spring面试题学习: 单例Bean是单例模式吗?


    学习背景

    想换工作. 学习记录, 算是一个输出.

    答案

    通常来说, 单例模式是指在一个JVM中, 一个类只能构造出一个对象. 有很多方法来实现单例模式, 比如饿汉模式. 但是我们通常讲得单例模式有一个前提条件就是规定在一个JVM中, 那如果要在两个JVM中保证单例呢? 那可能就要用分布式锁这些技术, 这里的重点是, 我们在讨论单例模式时, 是要考虑范围的.

    常见的单例模式实现方式:

    在这里插入图片描述

    扩展知识

    单例模式

    单例是一种设计模式,它保证整个系统中一个类只有一个对象的实例。在单例模式中,一个类只能创建一个对象,而且这个对象必须是唯一的。

    Spring Bean

    在Spring框架中,Bean是一个被Spring IoC容器管理的对象。简单来说,Bean就是通过Spring容器创建、装配和管理的对象实例。它可以是任何一个普通的Java对象,例如POJO(普通的Java对象)、Service、DAO、Entity等等。

    Java Bean

    Java Bean是一种类,而且是特殊的、可重用的类。Java语言是一种面向对象的编程语言,类是面向对象的编程语言的基础;可重用又是面向对象编程思想存在的意义之一,所以起名 Bean 很是形象。

    单例Bean

    说实话, 这个还没咋听说过, 是谁创造出来的概念吗?
    在Spring框架中,单例 Bean 是一种特殊类型的 Bean,它保证在整个应用程序中只有一个实例。

    个人评价

    2023年10月4日19:51:24

    1. 感觉这个问题就问答很奇怪, 回答得答案也很奇怪.
      问题是: 单例Bean是单例模式吗? 答案又没有一个明确的结论. 还扯到JVM, 扯到多个JVM, 完全不知道要考察一个什么东西.

    2. 这个问题可以简化一下, Bean 是 模式吗? Bean 怎么是一个模式呢? 或者可以这样问是不是好一点: Spring Bean的实现方式, 是否是通过单例模式来实现的?

    Spring Bean是通过 IoC 容器来实现单例的. 而且这种单例也是比较特殊的. 只是名称上的单例, 就是通过相关的名称获取到的 Bean 就是相同的. 同一个类型, 可能有多个不同名称的 Bean. 比如有一个 OrderService 类, 可以有多个实例. 例如: orderService1, orderService2…

    我的回答

    首先回答这个问题, 我们必须要统一一下概念, 那就是什么是Java Bean, 什么是 Spring Bean, 什么是单例 Bean, 什么事是例模式?

    单例模式中, 有个地方重点强调了: 保证整个系统中一个类只有一个对象的实例. 如果是类只有一个对象的实例, 那么Spring Bean就不能算是单例模式.

    Spring Bean 的唯一是通过Spring IoC 容器保证的. 而且是我们通过名称去拿, 就能拿到相同的Bean. 从单例模式的定义上将, Spring Bean 不能算是严格意义的单例模式. 其实就是多个 JVM 的情况.

  • 相关阅读:
    代码随想录算法训练营第三十二天 | 动态规划理论基础 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯
    搜索与图论:Prim
    《痞子衡嵌入式半月刊》 第 60 期
    MySQL事务
    只需两步折叠GoLand的控制台中多余的信息,控制台显示无效内容太多(GOROOT、GOPATH)
    C/C++之链表的建立
    【软考:系统集成项目管理】之 项目干系人管理
    NoSQLBooster4MongoDB - 用SQL查询MongoDB
    监听事件及普通事件的比较
    layui之会议OA系统4.0
  • 原文地址:https://blog.csdn.net/xiaozhengN/article/details/133560901