2016-04-10 17 views
1

@ServiceDependency ek açıklamasının bir yöntem üzerindeki etkileri nelerdir?@ServiceDependency ek açıklamasının etkileri nelerdir

Yüklediğim bazı örnek kodları incelemeye çalışıyorum ve içinde @ServiceDependency ile açıklamalı bir yöntem var. Bu yöntem başka hiçbir yerde çağrılmaz. Bu yüzden, @ServiceDependency ek açıklamasının bir yöntemin otomatik olarak çalışmasını sağladığını düşünüyorum. Bu açıklama gerçekten ne yapar, çünkü bazı sınıflardaki bazı üye değişkenleri @ServiceDependency ile açıklanmıştır.

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

cevap

3

Bu ek açıklama OSGi dan değil, ama bir Felix alt proje arasından, "DependencyManager". Osgi hizmetlerini yönetmeye yardımcı olan pek çok projeden biri. OSGi'de "Deklarasyon Hizmetleri" ile bu açıklama @Reference olarak adlandırılmaktadır.

Örneğinizde, bir AppScreen örneği OSGi Kayıt Defterinde kaydedildiğinde, addScreen yöntemi çağrılır. Bu örnek kayıtsız olduğunda, removeScreen yöntemi çağrılır.

DependencyManager

+0

belgelerine bakın. Cevabınız için teşekkür ederiz. '@ ServiceDependency' ile açıklamalı birden fazla yönteme sahip olabilir miyim? –

+0

Evet, mümkün –

İlgili konular