java - Grails:如何从字符串中调用服务和服务名称

标签 java grails groovy

我想动态地调用服务,以便服务名称将作为字符串值获得,我们可以使用下面的代码列出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/

相关文章:

Jenkins-pipeline 从 groovy 中的属性文件中提取并设置变量

Java args 不兼容的类型

java - 如何安装 "Android Support Library"以将 Gluon Mobile 应用程序部署到 Android?

jenkins - 如何从 Jenkins 2.0 管道脚本中读取属性文件

Grails 2.0 CreateCriteria私有(private)属性无法查询

hibernate - Grails自定义 validator 错误

grails - Groovy中不同类型的null

java - eclipse: 'failed to create the part' s 控件错误,StringIndexOutOfBoundsException

java - 使用路径获取 Filenet 中的 FileStorageArea [文档移动]

grails - Grails 最佳实践资源