如果我们不在spring配置文件的bean标签中指定id和name属性会发生什么

时间:2012-05-24 11:16:18

标签: spring

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

2 个答案:

答案 0 :(得分:1)

如果没有为类定义名称/ id,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

答案 1 :(得分:1)

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

<bean id="someBean" class="SomeBean">
    <property name="dependency">
        <bean class="Dependency"/>  <!-- anonymous here -->
    </property>
</bean>