2016-10-27 9 views
10

मेरी स्प्रिंग बूट आवेदन में, मैं जावा में इंटरफ़ेस है लगता है:स्प्रिंग: निश्चित इंटरफेस के सभी बीन्स मिल और प्रकार

public interface MyFilter<E extends SomeDataInterface> 

(वसंत के सार्वजनिक इंटरफ़ेस ApplicationListener < ई फैली एक अच्छा उदाहरण है ApplicationEvent>)

और मैं की तरह कार्यान्वयन की जोड़ी: किसी वस्तु मैं में,

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

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

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

फिर कर रहा हूँ दिलचस्पी उपयोग करने के लिए सभी फिल्टर कि लागू MyFilter < SpecificDataInterface>लेकिन नहीं MyFilter < AnotherSpecificDataInterface>

क्या इस वाक्य विन्यास को हो सकता है?

उत्तर

24

निम्नलिखित प्रत्येक माईफिल्टर इंस्टेंस को इंजेक्ट करेगा जिसमें एक प्रकार है जो विशिष्ट डेटाटाइफेस को सूची में सामान्य तर्क के रूप में विस्तारित करता है।

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

मुझे नहीं लगता कि आप डाल करने के लिए मतलब था "= नए ArrayList <>();" अंत में :) –

+0

आपका सही, मैंने इसे हटा दिया :)। अतिरिक्त जानकारी: यह अभी भी इसके साथ काम करेगा। –

4

आप बस का उपयोग कर सकते

@Autowired 
private List<MyFilter<SpecificDataInterface>> filters; 
संबंधित मुद्दे