java - 我们在 Spring 中使用 Prototype 范围的实际业务场景?

标签 java spring design-patterns singleton prototype

我正在阅读 Spring 中 Bean 的不同作用域。

每次我在 xml 中创建 bean 时,我都从未使用过scope属性,这意味着它是SingleTon。”

对于原型(prototype),我读到“原型(prototype)范围是有状态 bean 的首选”

有状态 Bean 是什么意思? 有人可以给我一个实时示例,我们在哪里有原型(prototype)范围?

最佳答案

因为单例是整个应用程序的一个实例,并且这个对象(我说的是模式,甚至还不是 spring)如果具有示例名称的某种状态。当只有一个线程调用该对象时,这个名为 name 的字段应该没问题。但正如我之前所说,单例是应用程序的一个对象。

Spring 的典型例子

@Component
MyComponent{

 private String name;

 public void editName(String newName)
  {
    name=newName
  }

}

尽快有多个线程调用此 bean,您将遇到竞争条件(您应该阅读有关它的内容)。这就是为什么单例不能有状态但可以有其他依赖项(依赖项注入(inject))。

如果你使用原型(prototype)作用域,spring每次使用都会创建一个对象,所以在示例中名称不会被共享并且存在任何竞争条件,这很好!

关于java - 我们在 Spring 中使用 Prototype 范围的实际业务场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56975612/

相关文章:

java - 确定点是否在角度内

java - 如何在 jlabel 上设置 imageicon 修复

java - 没有名为 'springSecurityFilterChain' 的可用 bean

java - 将 Controller 迁移到 Spring 4

design-patterns - 保持一切松散耦合和可扩展: Too many layers,的投资返回率太小?

java - 进程循环运行而不是每次都记录

java - 如何从 Swing 与 Servlet 进行通信

java - 什么是四人帮设计模式

oop - 这些哪个设计更好?

java - 如何制作 dateTime 函数并使用每个 JFrame?