J'ai une classe qui doit être créée pendant la phase d'injection mais cette instance ne sera référencée nulle part dans le code. La façon dont cette classe communique avec les autres est via le bus de l'événementGuice: création d'objet non référencé
public class DefaultCounterTracker {
private final EventBus eventBus;
private final ReplicatedMap<String, String> trackerCache;
@Inject
public DefaultCounterTracker(
EventBus eventBus,
@Named("CountersTrackerCache") ReplicatedMap<String, String> trackerCache)
{
this.eventBus = eventBus;
this.trackerCache = trackerCache;
bindListeners();
}
private void bindListeners()
{
eventBus.localConsumer(CounterCreated.name(), (Handler<Message<String>>) event ->
{
handleCreation(event.body());
});
eventBus.localConsumer(CounterDestroyed.name(), (Handler<Message<String>>) event ->
{
handleDestruction(event.body());
});
}
Debugging J'ai vu que cette classe est créée uniquement lorsque quelque part dans le code, il est écrit
@Inject
DefaultCounterTracker counterTracker
J'ai essayé liaison à l'aide d'un mais rien ne change: il semble que si la classe n'est pas référencée, Guice ne la créera pas. Y a-t-il un moyen de dire à Guice de le faire? Ai-je manqué le point?
Je pourrais aussi créer l'instance manuellement mais si je change d'implémentation par défaut de l'un des paramètres (EventBus par exemple) je dois aussi me rappeler de changer l'appel dans le constructeur.
Toute suggestion apprécié