
复制 问题
|
创建 子任务
|
|
如果你是 登录 你不能看到更多操作.
|
|
|
easyjweb
创建: 08/十二月/07 11:35 上午
更新: 08/十二月/07 11:02 下午
|
|
| 模块: |
IOC容器
|
| 影响版本: |
无
|
| 修复版本: |
无
|
|
|
环境:
|
easyjweb1.0m2 +jdk1.5
|
|
|
在容器中配置了多个页面处理器以后,出现了问题。提示信息如下:
容器中有多个同类型的Bean,无法确定返回哪一个!
配置信息如下:
<beans>
<bean name="CommonTemplatePage1" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="1"/>
</bean>
<bean name="CommonTemplatePage2" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="4"/>
</bean>
<bean name="CommonTemplatePage3" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="2"/>
</bean>
<bean name="CommonTemplatePage4" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="3"/>
</bean>
</beans>
|
|
描述
|
在容器中配置了多个页面处理器以后,出现了问题。提示信息如下:
容器中有多个同类型的Bean,无法确定返回哪一个!
配置信息如下:
<beans>
<bean name="CommonTemplatePage1" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="1"/>
</bean>
<bean name="CommonTemplatePage2" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="4"/>
</bean>
<bean name="CommonTemplatePage3" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="2"/>
</bean>
<bean name="CommonTemplatePage4" class="com.easyjf.web.core.support.CommonTemplatePageVender">
<property name="order" value="3"/>
</bean>
</beans> |
Show » |
|
修改后的源码如下所示:
public List getBeans(Class type) {
List l = new ArrayList();
List beans = super.getBeansByType(type);
if (beans != null) {
l.addAll(beans);
}
for (Container innerContainer : containers.values()) {
List innerBeans = innerContainer.getBeans(type);
if (innerBeans != null)
l.addAll(innerBeans);
}
if (Order.class.isAssignableFrom(type)) {
Collections.sort(l, new Comparator() {
public int compare(Object o1, Object o2) {
return ((Order) o1).getOrder().intValue()
- ((Order) o2).getOrder().intValue();
}
});
}
return l;
}