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 を呼び出せません」というメッセージが表示されます。nullエラーを削除したクラスファイルに追加import PluginPackage.PluginServiceしましたが、「nullでpluginMethodFromOtherPluginSerivceFromSamePluginを呼び出せません」というエラーが表示されます。

コードをサービスから移動してクラス ファイルに配置したときに、何かを宣言するのを忘れましたか?

私はウェブを検索してきましたが、この問題の解決策が見つからないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

クラスが src/groovy にある場合、サービスはクラスに自動的に挿入されません。これを修正できるいくつかの方法に精通しています。

  1. 代わりに、他のサービスに常駐する UtilityService を作成します。
  2. アプリケーション コンテキストを使用して、サービスを src/groovy クラスに手動で挿入します。ここに役立つリンクがあります
于 2013-04-03T07:15:17.073 に答える