初始化在spring xml中实现相同接口的类的多个实例
问题描述:
我有两个实现接口的类。这些类有两个不同的包。初始化在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
如何在这里初始化多个类?由于限制,我无法使用注释。
答
在服务器启动期间,您会收到错误,因为您尝试注入/自动插入接口,而不是实际的实现。当您尝试使用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"/>
对不起,它没有工作..仍然给出了同样的错误。 –