Il semble une question étrange (la réponse évidente serait la production, duh), mais si vous lisez la documentation java:Quelle est la bonne étape à utiliser pour Google Guice en production dans un serveur d'applications?
/**
* We want fast startup times at the expense of runtime performance and some up front error
* checking.
*/
DEVELOPMENT,
/**
* We want to catch errors as early as possible and take performance hits up front.
*/
PRODUCTION
dans un scénario où vous avez un appel sans état à un serveur d'application, la réception initiale méthode (ou là) crée l'injecteur nouveau chaque appel. Si toutes les liaisons de modules ne sont pas nécessaires dans un appel donné, il semble qu'il aurait mieux valu utiliser l'étape de développement (qui est la valeur par défaut) et ne pas prendre le coup de performance, car vous ne le prenez jamais du tout. , et ici la distinction entre "upfront" et "performance d'exécution" est un peu discutable, car c'est un appel. Bien sûr, l'inconvénient semble être que vous perdriez le contrôle d'erreur, ce qui provoquerait un problème par surprise.
Alors la question se résume-t-elle à ce que les hypothèses de ce qui précède soient correctes? Voulez-vous économiser les performances sur un grand nombre de modules lorsque la durée de vie donnée d'un injecteur est d'un appel?
Est-ce que créer un nouvel injecteur pour chaque requête est vraiment ce que vous voulez faire? Ce n'est pas comme ça que nous le faisons (injecteurs modulo pour enfants). –
@Kevin, je serais heureux d'entendre parler de meilleures options dans l'alternative. Notez que l'injecteur a une partie d'état (un jeton d'authentification transmis lors de l'appel) qui doit être différent à chaque appel, il est donc inutile de le stocker dans un static. Bien que je sache que les injecteurs d'enfants existent, je n'ai jamais regardé ce qu'ils peuvent faire pour moi. – Yishai
Envisager l'injection assistée? Ou peut-être un SimpleScope avec une valeur ensemencée? http://code.google.com/p/google-guice/wiki/CustomScopes –