2016-04-10 12 views
1

@ServiceDependencyアノテーションのメソッドへの影響はありますか?@ServiceDependencyアノテーションの影響

ダウンロードしたサンプルコードを調べようとしていますが、その中に@ServiceDependencyと注釈されたメソッドがあります。メソッドは決してどこでも呼び出されません。だから、私は@ServiceDependency注釈が自動的にメソッドを実行すると推測しています。この注釈は実際に何をするのですか?一部のクラスのメンバー変数の中には@ServiceDependencyという注釈が付いているためです。

class UI { 

    private final Map<ServiceReference, AppScreen> screens = new ConcurrentHashMap<>(); 

    @ServiceDependency(removed = "removeScreen") 
    public void addScreen(ServiceReference<?> sr, AppScreen screen) { 
     if (tabPane != null) { 
      Platform.runLater(() -> { 
       // Do something 
      }); 
     } 

     screens.put(sr, screen); 
    } 

    public void removeScreen(ServiceReference<?> sr) { 
     Platform.runLater(() -> { 
      AppScreen remove = screens.remove(sr); 
      // DO something else 
     }); 
    } 
} 

答えて

3

この注釈は、OSGiからではなく、フェリックスのサブプロジェクトから、 "DependencyManager"。 osgiサービスの管理に役立つ多くのプロジェクトの1つです。 OSGiでは、「Declaratives Services」で、この注釈は@Referenceと呼ばれます。

例では、AppScreenのインスタンスがOSGiレジストリに登録されている場合、メソッドaddScreenが呼び出されます。このインスタンスが登録解除されると、メソッドremoveScreenが呼び出されます。

は、返信用DependencyManager

+0

感謝のマニュアルを参照してください。 '@ ServiceDependency'でアノテーションされた複数のメソッドを持つことができますか? –

+0

はい、可能です –

関連する問題