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

单例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. 哪个名称上的位置. 但是一个类, 允许有很多个实例存在. 其实就是多个 JVM 的情况.

相关推荐
高斯林.神犇14 分钟前
四、依赖注入.spring
java·后端·spring
AI_零食18 分钟前
Flutter 框架跨平台鸿蒙开发 - 社交断舍离应用
运维·服务器·学习·flutter·游戏·开源·harmonyos
fengci.19 分钟前
php反序列化(复习)(第二章)
android·开发语言·学习·php
世人万千丶19 分钟前
Flutter 框架跨平台鸿蒙开发 - 感恩杀手应用
学习·flutter·开源·harmonyos·鸿蒙
管鲍考试学习系统21 分钟前
以考促学、以练固基:一体化在线考试学习平台设计与实践
学习·在线考试·考试系统·线上考试
charlie11451419128 分钟前
通用GUI编程技术——图形渲染实战(二十五)——Alpha混合与透明效果:分层窗口实战
c++·windows·学习·图形渲染·win32
charlie11451419130 分钟前
通用GUI编程技术——图形渲染实战(二十四)——GDI Region与裁切:不规则窗口与可视化控制
c++·windows·学习·c·图形渲染·win32
起来改bug36 分钟前
【AiAgent学习】状态管理与多步推理
学习·aiagent·aiagent入门
YangYang9YangYan37 分钟前
2026经管专业就业后学习数据分析的价值分析
学习·数据挖掘·数据分析
无限大.40 分钟前
数字生存05:在AI时代,如何保持学习能力,不断成长
人工智能·学习