在原型bean中使用Spring singleton-bean。会发生什么?

时间:2017-05-24 21:20:19

标签: java spring singleton prototype

在我们的系统中,我们经常会一次收到许多用户请求。所以我们正在创建原型bean并开始处理请求。 在这些原型bean中,我们当然使用其他一些bean。

所以我的问题:在原型bean中使用单例bean是否明智且可行?如果是,正确使用的条件是什么?

我认为如果我只使一个单例服务被多个原型bean使用它是有效的。 然而当几个bean一次要求一个单独的bean时会发生什么

1 个答案:

答案 0 :(得分:1)

  

在原型bean中使用singleton-bean是明智的吗?

这很大程度上取决于你的豆子是什么样的。如果将数据存储在单例bean的字段中,则必须考虑同步。如果您的bean完全是无状态的(例如,通过使用数据库作为持久性),您不必担心在整个地方使用bean的单个实例。

然而另一种方式(在单身人士中使用原型bean)可能非常危险。由于JVM中只有一个单例实例,因此该单例将为每个调用者保存对同一原型实例的引用。使其成为有状态并受同步问题的影响。

  

当几个bean一次要求一个单独的bean时会发生什么?

实例化的Java类只是内存中某处的数据和指令的集合,此类的变量保存了查找内容的引用。如果要执行类的函数,则处理器会查找内存中的内容。如果对同一个类有多个引用,则意味着多次引用相同的内存地址。 JVM管理内存访问并保证符合Java Memory Model。这是您应该注意的事项,但对于您的日常业务而言通常并不重要 - 除非您当然实施JVM: - )