如果没有放置id和name属性,那么spring容器将如何为该类创建一个对象,如果在spring配置文件中配置了多个相同的类,它将取什么名字
问问题
153 次
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 回答