具有两个相同类型NoUniqueBeanDefinitionException的bean的Spring Configuration xml文件

时间:2018-06-20 18:13:07

标签: java spring integration-testing

我正在尝试建立一个测试applicationContext文件,以便在我正在处理的项目上运行集成测试。 我有两个类的字段被标记为@Resource。我可以更改一个类,但不能更改一个类,因为它是从另一个没有任何更改权限的项目中导入的。我不能在没有给我org.springframework.beans.factory.NoUniqueBeanDefinitionException的情况下配置这些@Resouces字段。

简单的例子: appconfig.xml文件

8.0.0.4     and later
9.0.0.0 LTS and later
9.0.1   CD  and later

使用baseURL的类,(我可以更改,简化版本)

...Typical spring setup...
<bean id="baseUrl" class="java.lang.String">
<constructor-arg value="myURL"/>
</bean>
<bean id="supportedLang" class = "java.lang.String">
<constructor-arg value="en"/>
</bean>

使用supportedLang的类(我无权更改此类的简化版本)

@Service("myService")
public class MyService implements AnotherService{
@Resource
private String baseUrl;
public String getBaseUrl(){return baseUrl;}
public void setBaseURL(String baseURL){this.baseUrl = baseUrl;}

}

如果我未在应用程序配置文件中设置Bean,则会收到一个没有bean定义的错误。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试在@Resource(name = "baseUrl")类中使用MyService。这将告诉Spring采取哪个确切的bean并解决歧义。

另一种选择是更改XML配置并将primary="true"添加到baseUrl bean的声明中