在Grails 2.5.0中,有Grails类,我们称之为G
,它实现了某个接口,我们称之为I
;我自己也创建了一个新类,我们称之为M
,它也实现了I
。
不幸的是,第三方Grails插件使用:
注入@Autowired
I i
会抛出NoUniqueBeanDefinitionException
,因为G
和{ M
实施I
,Grails不知道使用哪个。
如何指定I
的所有注入,应使用类G
?
我只想注入类M
,例如:
def m
或
M m
有些解决方案提到在注入站点使用@Qualifier
注释,但是,因为注入站点在第三方插件中,所以如果我可以避免它,我不想修改该代码。我也不应该修改G
的来源,因为它来自Grails本身。所以,我更喜欢在某个配置文件中配置它,或者以某种方式注释M
,使得它不是I
注入的候选者,或者它是I
的低优先级候选者{1}}注入比默认优先级,这是我假设已应用于G
。
我知道这必须记录在Grails和/或Spring的某个地方,只是我得到了许多虚假的搜索结果。
一个可能更简单的相反问题是如何指定M
应用于I
类型的注入,而不是我关于如何指定{{1}的原始问题1}} 不应用于M
类型的注入。
答案 0 :(得分:0)
在grails-app/conf/spring/resources.groovy
中,添加:
beans = {springConfig.addAlias 'i', 'g'}