0

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

原始服务工作正常,但是当我移出部分服务并将它们放入另一个类中以因某种原因被调用时,插件服务实例未设置

原始服务

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)
     ...
}

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

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

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

任何帮助将不胜感激。

4

1 回答 1

2

如果您的课程位于 src/groovy 中,那么您的服务将不会自动注入您的课程。我熟悉几种可以解决此问题的方法:

  1. 而是创建一个 UtilityService,它与其他服务一起驻留。
  2. 使用应用程序上下文手动将服务注入到您的 src/groovy 类中。这是一个有用的链接
于 2013-04-03T07:15:17.073 回答