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 的情况.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值