插件服务不包括声明的服务实例

时间:2013-04-02 23:44:54

标签: grails

我正在尝试重构依赖于插件服务的服务。

原始服务工作正常,但是当我移出部分服务并将它们放入另一个要被调用的类时,插件服务实例没有设置

原始服务

package myPackage

class MyService {
  def pluginService

  def myMethod(args){
    def methodVar = pluginService.pluginMethod()
    // Do stuff with methodVar

    return methodVar
  }

  ...

  def myVar = myMethod(args)
  ...
}

我将方法移动到我的Groovy类,所以我可以在服务中引用它并拆分我有的单片文件

新课程文件

package myPackage

    class MyClass {
      def pluginService

      def myMethod(args){
        def methodVar = pluginService.pluginMethod()
        // Do stuff with methodVar

        return methodVar
      }  
    }

修改后的服务

package myPackage

class MyService {
      def myClass
     ...
     def myVar = myClass.myMethod(args)
     ...
}

通过在运行时执行此操作,我在MyClass文件的def methodVar = pluginService.pluginMethod()行上获得“无法调用null上的pluginMethod”。我将import PluginPackage.PluginService添加到类文件中,该文件删除了null错误,但现在它给了我“无法调用pluginMethodFromOtherPluginSerivceFromSamePlugin on null”错误。

当我将代码移出服务并将其放入类文件中时,我是否忘记声明了某些内容?

我一直在网上搜索,似乎无法找到解决此问题的任何方法。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您的班级位于src / groovy,那么您的服务将不会自动注入您的班级。我熟悉几种解决方法:

  1. 改为创建一个UtilityService,它驻留在其他服务中。
  2. 使用应用程序上下文将服务手动注入src / groovy类。这是一个helpful link