获取某个接口扩展的服务

Get services extended from a certain interface

可以从grails中的某个接口获取所有扩展的服务

所以我可以在一项服务中收集它们

是的,我想你可以通过自动装配到 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 版本中不起作用,我会感到惊讶。