2013-04-02 60 views
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) 
    ... 
} 

在運行時這樣做,我得到的MyClass的文件def methodVar = pluginService.pluginMethod()線「不能空援引pluginMethod」。我將import PluginPackage.PluginService添加到刪除空錯誤的類文件,但現在它給了我「不能調用null上的pluginMethodFromOtherPluginSerivceFromSamePlugin」錯誤。

當我將代碼移出服務並將其放入類文件時,是否忘記聲明一些內容?

我一直在尋找網絡,似乎無法找到解決這個問題的辦法。

任何幫助將不勝感激。

+0

在項目的文件夾層次結構中存儲新類的位置? – uchamp

+0

我在src/groovy/myPackage中存儲了類文件 –

回答

2

如果您的課程位於src/groovy,那麼您的服務將不會自動注入您的課程。我熟悉你可以解決這個問題的幾種方法:

  1. 改爲創建一個UtilityService,它駐留在其他服務中。
  2. 使用應用程序上下文將服務手動注入到src/groovy類中。這裏有一個helpful link
+0

謝謝,我在這個問題上敲了一下頭。我使用選項2,它完美運作。再次感謝您的幫助。 –

相關問題