【问题标题】:Get services extended from a certain interface从某个接口获取扩展的服务
【发布时间】:2022-01-02 18:50:03
【问题描述】:

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

这样我就可以在一项服务中收集它们

【问题讨论】:

    标签: grails grails-2.0


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

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      相关资源
      最近更新 更多