0

如果没有放置id和name属性,那么spring容器将如何为该类创建一个对象,如果在spring配置文件中配置了多个相同的类,它将取什么名字

4

2 回答 2

1

@HenriqueMiranda描述了命名约定。我还要补充一点,当在另一个 bean 中声明时,经常使用这样的 bean(我们称它们为匿名):

<bean id="someBean" class="SomeBean">
    <property name="dependency">
        <bean class="Dependency"/>  <!-- anonymous here -->
    </property>
</bean>
于 2012-05-24T18:19:10.003 回答
1

如果您没有为类定义名称/标识,spring 将设置一个默认名称,即:

com.mypackage.MyClass#0 //For the first object by MyClass
com.mypackage.MyClass#1 //For the second object by MyClass

当您尝试通过请求类型的上下文访问此对象时,spring 将为您返回一个异常(没有唯一的 bean 类型)。但是您可以通过名称访问询问上下文。

MyClass m0 = (MyClass)appContext.getBean("com.mypackage.MyClass#0"); // This work
MyClass m1 = (MyClass)appContext.getBean("com.mypackage.MyClass#1"); // This work
MyClass m2 = (MyClass)appContext.getBean(MyClass.class); // This DOES NOT work
于 2012-05-24T13:30:53.027 回答