Comment puis-je faire une option obligatoire dans Guice?

Voici mon client:

class Client {
    @Inject(optional=true) Service service;
}

Parfois que le Service n'est pas nécessaire, et nous savons que l'information lorsque la machine démarre (j'.e avant le liant est exécutée).
Comment puis-je faire la liaison facultative? Si je ne spécifiez pas contraignant du tout, il tente à nouveau le Service (et échoue car il n'y a pas de zéro argument du constructeur: "Erreur lors de l'injection au package.Client.service(Service de.java:40): impossible de trouver un constructeur dans le paquet.Service."), et je ne peux pas faire:

binder.bind(Service.class).toInstance(null);

parce que Guice semble rejeter les valeurs null. Des idées?

guice vous suggérons d'utiliser binder.bind(Service.class).toProvider(Providers.<Service>of(null));
Les gens à venir à travers cette question, peut-être intéressés à Guice du OptionalBinding de la classe, qui vous permet de fournir une liaison qui peut ou peut ne pas être défini.

OriginalL'auteur gubby | 2010-06-24