में एक सामान्य इंटरफ़ेस को लागू करने वाले सभी बीन्स प्राप्त करें वसंत में एक विशिष्ट सामान्य इंटरफ़ेस (उदा। फ़िल्टर <TestEvent
>) को लागू करने वाले सभी बीन्स का संदर्भ कैसे प्राप्त करें?स्प्रिंग
public interface Filter<T extends Event> {
boolean approve(T event);
}
public class TestEventFilter implements Filter<TestEvent> {
public boolean approve(TestEvent event){
return false;
}
}
public class EventHandler{
private ApplicationContext context;
public void Eventhandler(DomainEvent event) {
// I want to do something like following, but this is not valid code
Map<String, Filter> filters = context.getBeansOfType(Filter<event.getClass()>.class);
for(Filter filter: filters.values()){
if (!filter.approve(event)) {
return; // abort if a filter does not approve the event
}
}
//...
}
}
मेरे वर्तमान कार्यान्वयन प्रतिबिंब का उपयोग करता है निर्धारित करने के लिए filter.approve यह कॉल करने से पहले घटना को स्वीकार करता है तो:
यह मैं क्या लाइनों की एक न्यूनतम संख्या के साथ हासिल करना चाहते हैं। ईजी।
Map<String, Filter> filters = context.getBeansOfType(Filter.class);
for(Filter filter: filters.values()){
if (doesFilterAcceptEventAsArgument(filter, event)) {
if (!filter.approve(event)) {
return; // abort if a filter does not approve the event
}
}
}
कहाँ doesFilterAcceptEventAsArgument सभी बदसूरत काम है कि मैं चाहते हैं से दूर होने के लिए करना चाहते है। कोई सुझाव?
धन्यवाद, जैसा कि मैंने संदेह किया था। –