首先,我正在使用我将Spring 3.0与Wicket-spring(Wicket 1.5)一起使用。
尝试实现同一接口的几个bean时,我遇到了一些奇怪的行为......
“原始”实现在另一个.jar文件中指定并且工作正常。 但是当我尝试添加另一个bean时,我收到了以下错误。
java.lang.RuntimeException:在spring中为com.project.SomeServiceInterface类型配置了多个bean。 注释信息不可用,原因可能是因为您没有使用 @注入。您应该使用@Inject并通过Inject(“yourBean”)指定bean名称。 可用的bean名称:oldService,newService
bean的旧定义是从主“springContext.xml”导入的,而新的定义是在“override.xml”中定义的。
<import resource="classpath*:springContext.xml" />
...
<import resource="beansOverride.xml" />
我将新实现定义如下......
<bean primary="true" id="newService" class="com.project.SomeServiceImpl" />
我真的没有看到这是怎么发生的,原始的XML定义是相同的,只是它没有属性primary =“true”... Shouldent事实上新bean被标记为主要删除的可能性这种错误?
甚至更奇怪(?)是代码中没有注入SpringBean而没有定义bean名称的地方。
我对Spring很新,但我觉得这应该有用......有没有人对此深有见解?
修改
bean在两个不同的类中在基本代码的高处注入一个抽象类......但它们都是这样定义的:
@SpringBean(name="oldService")
private SomeServiceInterface mService;
这是bean在整个项目中使用的唯一方法,即它总是将bean名称定义为“oldService”。