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