【问题标题】:Injecting a Groovy Grails-service into a Java class将 Groovy Grails 服务注入 Java 类
【发布时间】:2012-01-03 11:55:02
【问题描述】:

我有一个用 Groovy 实现的 Grails 服务,我想在 Web 应用程序中将它注入到 Java 类中。我知道我可以通过 applicationContext.getBean("exampleService") 获取 Java 中的 bean,但是 ExampleService 的类型在编译时是未知的。

我可以简单地导入服务吗?它似乎没有声明一个典型的包。

(我对 Grails 和 Java Web 还很陌生,因此非常感谢任何有助于我理解幕后发生的事情的东西。)

【问题讨论】:

    标签: java grails service groovy dependency-injection


    【解决方案1】:

    推荐的方法是将 Grails 服务提取到一个接口中,然后通过 Spring 将该服务注入到您的 java 类中。请参阅用户指南 - http://www.grails.org/doc/1.3.x/guide/8.%20The%20Service%20Layer.html#8.4%20Using%20Services%20from%20Java

    【解决方案2】:

    如果您想在不使用applicationContext.getBean("exampleService") 的情况下将Grails 服务注入Java 类,Java 类本身必须是一个Spring bean,您应该将两者连接到resources.groovyresources.xml 中。

    如果以上内容对您来说没有多大意义,您可能需要阅读 Spring 依赖注入的基础知识。

    【讨论】:

      【解决方案3】:

      按照 Dónal 所说的,您可以将 Java 类连接为 resources.groovy 中的 bean

      例如,假设您的 java 类的名称是 JavaClass,它位于您的 src 文件夹中的某个位置。转到 resources.groovy 并将以下内容添加到您的 bean...

      beans = {
      ...
          javaClass(JavaClass) {
              exampleService = ref('exampleService')
          }
      }
      

      现在您应该能够像普通 bean 一样访问您的 java 类中的 exampleService。

      def exampleService
      

      但请记住,如果您使用的是 intellij 之类的东西,小豆图标可能不会出现在它旁边。这个是正常的。另外,不要忘记将 JavaClass 导入 resources.groovy

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-30
        • 2012-05-25
        • 2016-02-22
        • 2011-02-03
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多