我有两个实现接口的类。这些课程分为两个不同的课程。
package com.service;
public interface PServices{ }
package com.transaction.service.v2;
@Transactional(propagation = Propagation.REQUIRED, rollbackFor=Exception.class)
public class PServicesImpl implements PServices {}
package com.transaction.service.v1;
@Transactional(propagation = Propagation.REQUIRED, rollbackFor=Exception.class)
public class PServicesImpl implements PServices {}
我在spring xml中初始化类,如下所示:
<bean id="pServicesv1"
class="com.transaction.service.v1.PServicesImpl" />
<bean id="pServicesv2"
class="com.transaction.service.v2.PServicesImpl" />
但在服务器启动期间,我收到以下错误。
没有定义com.service.PServices类型的唯一bean:expected 单豆但发现2
如何在这里初始化多个类?由于限制,我无法使用注释。
答案 0 :(得分:1)
在服务器启动期间,您会收到错误,因为您尝试注入/自动连接接口而不是实际实现。当您尝试Inject / Autowire时,Spring将尝试识别Inject / Autowire中的哪个bean。由于您有两个相同类型的定义bean(接口),因此Spring无法确定哪个是Inject。
在bean定义中使用autowire="byName"
,这样当您尝试Inject / Autowire接口时,它将根据名称注入bean。
<bean id="pServicesv1"
class="com.transaction.service.v1.PServicesImpl"
autowire="byName"/>