2014-02-25 74 views
1

我有两个实现接口的类。这些类有两个不同的包。初始化在spring xml中实现相同接口的类的多个实例

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 {} 

我初始化的春天XML类如下:

<bean id="pServicesv1" 
    class="com.transaction.service.v1.PServicesImpl" /> 

    <bean id="pServicesv2" 
    class="com.transaction.service.v2.PServicesImpl" /> 

但在服务器启动时我收到以下错误。

型com.service.PServices没有独特的bean定义:预计 一个bean,但发现2

如何在这里初始化多个类?由于限制,我无法使用注释。

回答

1

在服务器启动期间,您会收到错误,因为您尝试注入/自动插入接口,而不是实际的实现。当您尝试使用Inject/Autowire时,Spring将尝试识别Inject/Autowire的bean。由于您有两个相同类型(接口)的已定义bean,因此Spring无法确定要注入哪一个。

在bean定义中使用autowire="byName",这样当您尝试使用Inject/Autowire接口时,它将根据名称注入bean。

<bean id="pServicesv1" 
    class="com.transaction.service.v1.PServicesImpl" 
    autowire="byName"/> 
+0

对不起,它没有工作..仍然给出了同样的错误。 –