我正在尝试建立一个测试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定义的错误。
任何帮助将不胜感激。
答案 0 :(得分:0)
尝试在@Resource(name = "baseUrl")
类中使用MyService
。这将告诉Spring采取哪个确切的bean并解决歧义。
另一种选择是更改XML配置并将primary="true"
添加到baseUrl
bean的声明中