是否每次编写getBean()时都会在Spring中创建一个对象?

是否每次编写getBean()时都会在Spring中创建一个对象?,spring,object,inversion-of-control,Spring,Object,Inversion Of Control,我已经读到,每当我们在spring中执行getBean()时,它都会返回所需的对象。 那么,这是否意味着,如果我编写调用getBean()1000次,就会创建1000个对象?? 如果是,那么Spring如何管理这些对象? 如果没有,请解释Spring在对象创建方面是如何工作的? 是否存在对象池之类的概念? 请澄清我的疑问。我是spring新手,非常困惑spring框架的创建是为了让我们的任务变得简单还是让事情变得更复杂。 Spring似乎是一个XML的网络:(来自: 单例范围 只管理一个单例be

我已经读到,每当我们在spring中执行getBean()时,它都会返回所需的对象。 那么,这是否意味着,如果我编写调用getBean()1000次,就会创建1000个对象?? 如果是,那么Spring如何管理这些对象? 如果没有,请解释Spring在对象创建方面是如何工作的? 是否存在对象池之类的概念? 请澄清我的疑问。我是spring新手,非常困惑spring框架的创建是为了让我们的任务变得简单还是让事情变得更复杂。 Spring似乎是一个XML的网络:(

来自:

单例范围 只管理一个单例bean的一个共享实例,所有实例 请求具有与该bean定义匹配的一个或多个id的bean 导致Spring返回一个特定的bean实例 容器

换句话说,当您定义bean定义时 springioc容器的作用域是一个单例,它只创建一个单例 由该bean定义定义的对象的实例 实例存储在此类单例bean的缓存中,所有 该命名bean的后续请求和引用返回 缓存对象

总之,不,Spring将在bean工厂中只创建每个bean的一个实例,除非您将默认范围singleton更改为其他bean范围

包括:

豆镜 singleton(默认)将单个bean定义的范围限定为 每个Spring IoC的单个对象实例 容器。
原型作用于单个bean 定义到任意数量的对象实例。
请求将单个bean定义范围限定为 单个HTTP请求的生命周期;也就是说,每个HTTP请求都有自己的 在单个bean的后面创建的自己的bean实例 定义。仅在支持web的Spring上下文中有效 应用程序上下文。
会话作用域为单个 指向HTTP会话生命周期的bean定义。仅在 支持web的Spring应用程序上下文的上下文。
全局会话将单个bean定义的范围限定为 全局HTTP会话的生命周期。通常仅在portlet中使用时有效 上下文。仅在支持web的Spring上下文中有效 应用程序上下文。 可能重复的