接下来我要做的是:我有调度程序,它将接收不同类型的消息并将它们路由到处理程序。Dispatcher 持有 map of ,每个 MessageHandler 都可以处理自己的消息类型,每个 handler 都应该在 dispatcher 中注册。
所以我有实现接口的“调度程序”服务:
public interface Dispatcher{
public void register(IMessageHandler handler);
public void handle(IMessage message);
}
和几个实现接口 IMessageHandler 的 bean:
public interface IMessageHandler{
public void handle(IMessage message);
}
IMessage 也是一个接口。
我需要 IMessageHandler 的这个实例来调用 Dispatcher 上的“register”方法来注册自己,以便调度程序可以将消息分发给适当的处理程序。
现在我接下来做:
@Service(IMessageHandler.class)
public class MessageBHandler implements IMessageHandler {
@Inject
@Reference
Dispatcher dispatcher;
@PostConstruct
public void registerMyself(){
dispatcher.register(this);
}
...
}
但是我在日志中看到 Dispatcher 被创建了两次。我怎样才能让他单身?