java - Spring : Singleton VS Prototype

标签 java spring scopes

我是 Spring 新手,开始学习新概念,并且我发现了有关 bean Scopes 的主题: - Singleton :每次都返回相同的实例。 - 原型(prototype):每个请求返回对象的新实例。

我的问题是:这对我有什么帮助,对象的同一实例和新实例之间有什么区别,或者为什么存在原型(prototype)范围!

最佳答案

相同实例意味着从 ApplicationContextBeanFactorygetBean() 的任何调用(从任何地方)都会为您提供相同的实例,即,当 Spring 初始化时(每个 Spring 容器),构造函数仅被调用一次。

但是,在某些情况下您可能希望使用不同的对象实例。

例如,如果您有一个 Point 对象作为 Triangle 类中的成员变量,则在 Singleton 的情况下,当 Triangle 类被实例化时,Point对象也被实例化,因为它是依赖的。

如果您需要在其他地方使用不同的 Point 实例,那么您需要将 Point 定义为原型(prototype),否则它具有相同的状态。

谷歌搜索肯定会帮助您找到答案和演示用例的示例。

希望这有帮助。

关于java - Spring : Singleton VS Prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264211/

相关文章:

java - 无法构建发布 apk 版本

java - 如何将存储过程的返回值映射到 Hibernate 中的实体类

java - 如何在hibernate中连接多个表

ruby-on-rails - 如何在Rails 4中将参数传递给has_many关联范围?

java - 将 ZipEntry 数据写入字符串

java - 无法使用 Oracle XE 维护 JDBC 连接

java - Spring data mongoDB 数据库连接的惰性配置

java - Spring REST - 在更长的空闲时间之后,第一次调用需要很长时间(5-10 秒)

c++ - 即使在离开范围后,您如何访问在 C++ 中分配在堆上的变量?

ruby-on-rails - 在 Rails 中使用相同部分时显示不同数据的最佳实践