2014-02-25 129 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

對不起,它沒有工作..仍然給出了同樣的錯誤。 –