J'ai franchi le pas et utilisé Guice pour mon dernier projet. Les impressions globales sont bonnes, mais j'ai rencontré un problème que je n'arrive pas à comprendre. Contexte: C'est une application Java6 qui accepte les commandes sur un réseau, analyse ces commandes et les utilise ensuite pour modifier certaines structures de données internes. C'est un simulateur pour certains matériels fabriqués par notre société. Les modifications apportées aux structures de données internes correspondent à l'effet que les commandes ont sur le matériel réel, de sorte que les requêtes ultérieures des structures de données doivent refléter l'état matériel en fonction des commandes précédemment exécutées.Aller à Guice créer des objets à partir d'objets de données stupides
Le problème que j'ai rencontré est que les objets de commande doivent accéder à ces structures de données internes. Ces structures sont créées par Guice car elles varient en fonction de l'instance réelle du matériel émulé. Les objets de commande ne sont pas créés par Guice parce qu'ils sont essentiellement des objets stupides: ils acceptent une chaîne de texte, l'analysent et invoquent une méthode sur la structure de données. La seule façon de faire en sorte que tout cela fonctionne est de faire en sorte que ces objets de commande soient créés par Guice et transmis dans les structures de données par injection. Il se sent vraiment maladroit et bloque totalement le constructeur des objets de données.
Qu'est-ce que j'ai manqué ici?
Si vos objets de valeur varient en fonction du matériel émulé, vous pouvez écrire une fabrique pour les créer et demander à Guice d'injecter l'usine dans le code qui en a besoin. En d'autres termes, une façon d'éviter d'injecter des objets de valeur est de créer un service qui produit les objets de valeur. – NamshubWriter