我想动态地调用服务,以便服务名称将作为字符串值获得,我们可以使用下面的代码列出grails项目中的所有服务名称。
import org.codehaus.groovy.grails.plugins.metadata.GrailsPlugin
for (type in ['service']) {
for (artifactClass in ctx.grailsApplication."${type}Classes") {
def clazz = artifactClass.clazz
def annotation = clazz.getAnnotation(GrailsPlugin)
if (annotation) {
println "$type $clazz.name from plugin '${annotation.name()}'"
}
else {
println "$type $clazz.name from application"
}
}
}
在这里我们将获得该服务的
artifactClass
。是否有任何选择可以使用此想法来调用该服务。请帮助我。
最佳答案
您可以从applicationContext
获取用于该服务的bean
//inject application context bean
def applicationContext
//to use
applicationContext."${yourServiceName}".serviceMethod()
关于java - Grails:如何从字符串中调用服务和服务名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43385340/