在 Grails 2.5.0 中,有 Grails 类,我们称之为 G
,实现了某个接口(interface),我们称之为I
;我自己也新建了一个类,我们称之为M
, 这也实现了 I
.
不幸的是,第三方 Grails 插件使用以下方式注入(inject):
@Autowired
I i
抛出
NoUniqueBeanDefinitionException
, 因为两者 G
& M
实现I
,而 Grails 不知道该使用哪个。如何为
I
的所有注入(inject)指定它? , 类(class) G
应该用吗?我只想注入(inject)类
M
对于像这样的注入(inject):def m
或者
M m
一些解决方案提到使用
@Qualifier
注入(inject)站点的注释,但是,由于注入(inject)站点位于第三方插件中,如果可以避免,我不想修改该代码。我也不应该修改 G
的来源,因为它来自 Grails 本身。所以,我宁愿在一些配置文件中配置它,或者以某种方式注释 M
这样它要么不是 I
的候选者注入(inject),或者它是 I
的优先级较低的候选对象注入(inject)比默认优先级,这是我假设已应用于 G
.我知道这必须记录在 Grails 和/或 Spring 的某个地方,只是我得到了许多虚假的结果来寻找答案。
一个可能更简单的相反问题是如何指定
M
应该用于 I
类型的注入(inject),而不是关于如何指定 M
的原始问题不应用于 I
类型的注入(inject).
最佳答案
在 grails-app/conf/spring/resources.groovy
, 添加:
beans = {springConfig.addAlias 'i', 'g'}
关于spring - 在 Grails 中,指定实现相同接口(interface)的两个类中的哪一个应该用于注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115308/