有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

每个容器每个bean的JavaSpring单例作用域

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

spring singleton scope

参考手册中将Spring单例定义为每个容器每个bean

每个容器表示如果我们愿意:

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

豆子。xml:

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

然后myobj==myobj1就会变成现实。表示两者都指向同一实例

对于每个bean的部分短语每个容器每个bean的我有点困惑。我对每个bean的的以下描述是否正确:

如果我们喜欢

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

豆子。xml:

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

然后myobj==myobj1将变成false。意味着它们是两个不同的实例


共 (3) 个答案

  1. # 1 楼答案

    没错

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

    通过在SpringXML文件中定义bean,该bean(实例)将注册到Spring的应用程序上下文中,然后该实例可以传递到代码的其他区域

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

  2. # 2 楼答案

    myBean在每次调用beans时都是一个Spring singleton。getBean(“myBean”)将始终返回相同的实例。而MySecondBean拥有不同的id则是另一个Spring singleton。在同一应用程序上下文中,可以有同一类的不同单例bean

  3. # 3 楼答案

    是的,你说得对。测试它会告诉你的