2010-11-14 5 views
0

Je n'ai pas trop utilisé le printemps, donc je pourrais manquer quelque chose d'évident. Quoi qu'il en soit, voici la question:Printemps, créer un haricot à partir de désérialiser

Dites que vous avez un bean géré par Spring qui est un client réseau. Une fois que vous appelez une méthode, vous obtenez un objet, disons que c'est une liste. Maintenant, je veux traiter cette liste en quelque chose de plus utile pour le reste de mon application, disons que c'est un type MyBusinessBean.

Comment puis-je éviter de faire un

new MyBusinessBean(List<String> info) 

?? Si je fais cela, cela devient un objet qui ne fait pas partie du contexte.

que je fais quelque chose comme:

MyBusinessBean myBean = (MyBusinessBean) applicationContext.getBean("myBusinessBean", info); 

Cependant, je continue à lire partout que c'est un signal de quelque chose ne se fait pas correctement, puisque je fais mon contexte de code conscient. Quelle est la manière propre au printemps de le faire?

Répondre

2

La deuxième façon est ce que vous faites au printemps. Appeler "nouveau" signifie que vous brisez le modèle.

Mais ne supposez pas que chaque appel à "nouveau" est éliminé par Spring. Chaque objet n'a pas besoin d'être sous le contrôle de Spring. Parfois, il suffit d'appeler "nouveau", généralement dans le cadre d'une seule méthode. Créer l'objet, l'utiliser, GC it - pas d'usine de haricot de printemps nécessaire.

Si vous souhaitez donner à un objet de votre application l'accès à cette liste après la sérialisation, transmettez simplement la référence. Vous n'avez pas besoin de la fabrique de haricots de printemps dans la situation que vous avez décrite, car vous avez déjà mis en série l'objet du serveur.

+0

Je n'ai plus besoin de la liste après avoir créé myBean. Je suis juste confus parce que si je veux tester la classe qui obtient la liste et ajoute myBean au contexte j'ai maintenant besoin d'injecter un contexte de test dans le test unitaire et la documentation Spring dit que mes objets devraient être testables sans Spring ou tout autre conteneur. Je suppose que cela doit être assez courant dans les applications Web, lorsqu'une requête arrive et que vous devez créer des objets à partir de la requête. –

+0

Je suis conscient que la création d'objets dans le cadre de la méthode est ok, mais c'est un objet dont j'ai besoin pour passer de nombreuses classes. –

+0

"... je n'ai plus besoin de la liste après avoir créé myBean ..." - désolé, je ne vous suis pas. Votre commentaire parle de tests et d'applications Web. Lequel est-ce? Lequel êtes-vous le plus concerné par votre question? – duffymo

Questions connexes