我正在尝试重构依赖于插件服务的服务。
原始服务工作正常,但是当我移出部分服务并将它们放入另一个要被调用的类时,插件服务实例没有设置
原始服务
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”错误。
当我将代码移出服务并将其放入类文件中时,我是否忘记声明了某些内容?
我一直在网上搜索,似乎无法找到解决此问题的任何方法。
任何帮助都将不胜感激。
答案 0 :(得分:2)
如果您的班级位于src / groovy,那么您的服务将不会自动注入您的班级。我熟悉几种解决方法: