2016-10-27 33 views
10

yazın Java arayüzü olduğunu varsayalım:Bahar: Belirli arayüzünün tüm Beans almak VE benim Bahar Boot uygulamasında

public interface MyFilter<E extends SomeDataInterface> 

(Spring'in kamu arayüzü ApplicationListener < E> ApplicationEvent uzanır iyi bir örnektir edilir)

ve ben gibi uygulamaların çift var: bazı nesne I,

@Component 
public class DesignatedFilter1 implements MyFilter<SpecificDataInterface>{...} 

@Component 
public class DesignatedFilter2 implements MyFilter<SpecificDataInterface>{...} 

@Component 
public class DesignatedFilter3 implements MyFilter<AnotherSpecificDataInterface>{...} 

Sonra ilgilenen yararlanmak duyuyorum Tüm filtreleri o uygulamak myFilter < SpecificDataInterface>ama DEĞİL myFilter < AnotherSpecificDataInterface> Bu sözdizimi ne olurdu

?

cevap

24

şu Listesine jenerik argüman olarak SpecificDataInterface uzanan bir türü olan her myFilter örneği enjekte edecektir.

@Autowired 
private List<MyFilter<? extends SpecificDataInterface>> list; 
+0

kullanabilirsiniz "= new ArrayList <>();" sonunda :) –

+0

Doğru, kaldırdım :). Ek bilgi: Hala çalışır. –

4

Sadece sen koymak anlamına sanmıyorum

@Autowired 
private List<MyFilter<SpecificDataInterface>> filters;