java - spring 单例作用域——每个容器每个 bean

标签 java spring

我问这个问题是针对我的问题:

spring singleton scope

Spring 单例在引用手册中被定义为per container per bean

per container 表示如果我们喜欢:

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); //myBean is of singleton scope.
MyBean myobj1=(MyBean)context.getBean("myBean");

Beans.xml:

<bean id="myBean" class="MyBean"/>

然后 myobj==myobj1 将变为 true。意味着两者都指向相同的实例

对于短语per container per beanper bean 部分,我有些困惑。我对 per bean 的关注是否正确:

如果我们喜欢

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); 
MyBean myobj1=(MyBean)context.getBean("mySecondBean");

Beans.xml:

<bean id="myBean" class="MyBean"/>
<bean id="mySecondBean" class="MyBean"/>

那么 myobj==myobj1 就会出来 false。意思是它们是两个不同的实例

最佳答案

没错。

如果有帮助,您还可以将 Spring bean 视为您本来可以使用构造函数在 Java 代码中手动创建的实例。

通过在 Spring XML 文件中定义 bean,该 bean(实例)注册到 Spring 的 App Context,然后该实例可以传递到代码的其他区域。

通过创建一个新 bean,您实际上是在创建一个新实例。因此,您可能会创建同一类的任意数量的 bean(实例)

关于java - spring 单例作用域——每个容器每个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12918066/

相关文章:

java - Thread.sleep sleep 时间少于指定的时间?

java - Oracle 10g 声称包体有错误但实际上没有

java - 从 JSP/Servlet/Portlets(Jetspeed) 迁移到 Spring 项目 - 应用程序设计

java - Spring 配置问题 - 无法加载应用程序类

java - Spring MVC 应用程序在 URL 中过滤 HTML - 这是一个安全问题吗?

java - 更快地批量加载嵌套数据

java - 计算机在二进制搜索中必须进行多少次计算?

java - 确定多边形上线段的最佳起点和终点

java - 为什么我们需要多部分数据格式的边界?

java - 在 oauth2 中使用 spring cloud gateway