从某个接口获取扩展的服务

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 版本中不起作用,我会感到惊讶。

【讨论】:

以上是关于从某个接口获取扩展的服务的主要内容,如果未能解决你的问题,请参考以下文章

如何通过JS接口获取数据

获取Java接口的所有实现类

spring 提供的可扩展的接口和类

如何使用接口获取对象的子集?

CGI (通用网关接口) 简介

CGI(通用网关接口)