如何检查服务是否在grails中实现接口

时间:2014-11-15 11:35:24

标签: spring grails grails-2.3

我有一个界面“ TestInterface ”并且grails服务“ TestService ”实现了“TestInterface”。但是当我测试我是否有一个实现这样的接口的服务时:

application.serviceClasses?.each { serviceClazz ->

            if(serviceClazz instanceof TestInterface) {
                println "service name => "+ serviceClazz.name;
            }
}

结果是我没有得到任何错误或我的期望(服务名称=> TestService

我也尝试在if条件下将serviceClazz更改为serviceClazz.class,serviceClazz.metaClass但仍无法正常工作。

谢谢,

1 个答案:

答案 0 :(得分:2)

怎么样:

if (TestInterface.class.isAssignableFrom(serviceClazz)) {
    ... 
}

更新

所以我设法使用 Grails 2.3.11 运行实际示例。

class BootStrap {

    def grailsApplication

    def init = { servletContext ->
        grailsApplication.serviceClasses.each { serviceClazz ->
            if (TestInterface.isAssignableFrom(serviceClazz.clazz)) {
                println serviceClazz
            }
        }
    }
    def destroy = {
    }
}

如您所见,serviceClazz.clazz中的重要部分是 clazz

希望这有帮助!