2016-10-18 3 views
0

私は以下のように注入された豆のセット(Listener)を持つ豆(EventSender)を持っています。 Springは両方のリスナーBeanをセットに注入していないようです(時にはnone)。 インタフェースを実装するすべてのBeanが注入されることを保証する方法はありますか?似たような豆のセットの注入を保証するには?

public interface Listener {  
    void handleEvent(EventType event)  
} 

@Named  
public class EventSender {  
    @Inject  
    Set<Listener> listeners;  

    public void SendEvent (EventType event) {  
     for(Listener listener: listeners){  
      listener.handleEvent(event);  
     }  
    }  
}  

@Named 
public class Listener1 implements Listener { 
    @Override 
    public void handleEvent(EventType event){ 
     //handle this event 
    } 
} 

@Named 
public class Listener2 implements Listener { 
    @Override 
    public void handleEvent(EventType event){ 
     //handle this event 
    } 
} 
+0

は、あなたはそれがあることを確認するRequired' @ Autowire'(または '@'春を使用することができるかもしれませ@Produce

@Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({FIELD, METHOD, TYPE}) public @interface ListnerProducer { } public class ListenerFactory { @Produces @ListnerProducer public Set<Listner> getListners(){ //return your listners } } 

を使用する必要があります注入された)と '@ Component'アノテーションです。 '@Inject'は依存関係が注入されることを保証しません –

答えて

0

その後、

@Inject 
@ListnerProducer 
Set<Listner> listeners; 
関連する問題