【发布时间】:2022-01-02 18:50:03
【问题描述】:
是否可以从 grails 中的某个接口扩展所有服务
这样我就可以在一项服务中收集它们
【问题讨论】:
标签: grails grails-2.0
是否可以从 grails 中的某个接口扩展所有服务
这样我就可以在一项服务中收集它们
【问题讨论】:
标签: grails grails-2.0
是的,我认为您可以通过自动装配到 List 类型来做到这一点。假设您在grails-app/services 中有一个接口BaseService 的三个实现:
grails-app/services/exampleapp/BaseService.groovy
package exampleapp
interface BaseService {
}
grails-app/services/exampleapp/OneImplService.groovy
package exampleapp
class OneImplService implements BaseService {
}
grails-app/services/exampleapp/TwoImplService.groovy
package exampleapp
class TwoImplService implements BaseService {
}
现在,您可以注入BaseSerive 的所有实现,如下所示:
grails-app/services/exampleapp/TestService.groovy
package exampleapp
import org.springframework.beans.factory.annotation.Autowired
class TestService {
@Autowired
List<BaseService> baseServiceList
void doSomething() {
assert baseServiceList.size() == 2
}
}
请注意,上面的示例是使用 Grails 5 Web 应用程序测试的。但是,如果这在以前的 Grails 版本中不起作用,我会感到惊讶。
【讨论】: