Je dois injecter un champ uniquement s'il est disponible dans la portée actuelle et null sinon. Par exemple:Injection Scoped facultative dans Guice
public class Thinger implements Provider<SomeSuch> {
public @Inject(optional=true) HttpServletRequest request;
public SomeSuch get() {
return request == null ? new WhosIt() : WhatsIt();
}
}
Cependant, si HttpServletRequest est lié (ce qui est), mais pas dans la portée, je reçois un ProvisioningException. J'ai été en mesure de trouver une façon élégante de le faire, donc je suis relégué à faire quelque chose comme.
HttpServletRequest request = null;
try {
request = injector.getInstance(HttpServletRequest.class);
} catch(ProvisioningException e) {}
Qui se sent juste toutes sortes d'erreurs. Y a-t-il un moyen approprié de faire cela?
Comment pouvons-nous vérifier si nous sommes "à l'intérieur" d'une portée? – BrunoJCM