gpt4 book ai didi

Java Bean 实例化错误的 bean

转载 作者:行者123 更新时间:2023-12-01 23:42:36 28 4
gpt4 key购买 nike

在我的 Spring-Module.xml 中,我有两个 bean:

<bean id="two_num" class="main.java.com.shen.Generator">
<property name="length" value="8" />
<property name="categories" value="3" />
...
</bean>
<bean id="six_num" class="main.java.com.shen.Generator">
<property name="length" value="6" />
<property name="categories" value="1" />
<property name="numeric" value="numeric" />
...
</bean>

我像这样实例化我的类:

ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
Generator obj = (Generator) context.getBean("two_num");

由于某些原因,尽管我明确表示我想要 bean“two_num”,但 java 总是实例化我的第二个 bean。如果我翻转顺序,并将“six_num”的 bean 放在“two_num”之上,它将获得底部的 bean。 :|这是怎么回事?我很困惑。我选择特定 bean 的方法是否错误?

编辑:再添加一个 bean 后,这是我运行程序时得到的结果:

INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@e949f69: defining beans [two_num,six_num,four_num]; root of factory hierarchy

正如预期的那样,当我在类中调用 print 方法时,我可以看到当前对象是使用 four_num 中指示的信息实例化的,而不是“two_num”

最佳答案

正如已经建议的那样,当然要删除字段上的静态修饰符。另外,如果您想要“单例”,请修改您的 XML:

<bean id="two_num" class="main.java.com.shen.Generator" scope="singleton">
<property name="length" value="8" />
<property name="categories" value="3" />
...
</bean>

因此您只会获得每个 bean 的一个实例。您仍然会获得 Generator 的多个实例,但每个 bean 只能有一个。

关于Java Bean 实例化错误的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com