从某个接口获取扩展的服务
Posted
技术标签:
【中文标题】从某个接口获取扩展的服务【英文标题】:Get services extended from a certain interface 【发布时间】:2022-01-02 18:50:03 【问题描述】:是否可以从 grails 中的某个接口扩展所有服务
这样我就可以在一项服务中收集它们
【问题讨论】:
【参考方案1】:是的,我认为您可以通过自动装配到 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 版本中不起作用,我会感到惊讶。
【讨论】:
以上是关于从某个接口获取扩展的服务的主要内容,如果未能解决你的问题,请参考以下文章