Sont @ManagedBeans obsolètes dans JavaEE6 à cause de @Nommé en CDI/Soudure?
En raison de CDI (et sa mise en œuvre de la Soudure), tous les POJO en JEE6 peut être annotée avec @Named
, ce qui rend le POJO accessible à la vue.
Est-ce à dire que ManagedBeans sont complètement obsolète aujourd'hui?
Ou ai-je raté quelque chose où @ManagedBean
encore un sens?
Vous devez vous connecter pour publier un commentaire.
En bref,
@ManagedBean
de sens que pour les applications qui utilisent JSF, mais ne pas utiliser la JSR 299 (quelle que soit la raison). Ci-dessous une explication plus longue de Gavin King:Vous avez le choix. Soit utiliser le @ManagedBean de JSF2 pour lier les haricots dans vos formulaires, ou utiliser le @Nommé d'annotation à partir d'CDI. Si vous prévoyez de ne le faire que JSF, vous pouvez coller à @ManagedBean, mais si vous souhaitez intégrer avec les EJB, ou de faire usage de CDI @ConversationScoped, puis aller dans le CDI de l'itinéraire.
Personnellement, je pense que la prochaine version de l'ACI devrait rendre caduque le @ManagedBean, et de normaliser sur CDI. La dualité est source de confusion pour les nouveaux arrivants.
CDI n'a pas de portée de vue, parce qu'il n'ont pas la notion d'un point de vue, donc si vous avez besoin de cette portée, CDI, dans sa forme pure ne peut pas le faire. L'étendue de l'affichage signifie demande portée + étant AJAX-prêt. C'est pas une vue JSF, comme une page nommée
xyz.xhtml
, même si vous voyez JSF<f:viewParam>
et l'aime. Une utilisation fréquente de cas avec vue étendue de haricots est comment obtenir les paramètres GET dans une telle bean. Aussi lire ce.Noter que les CDI vit plutôt à l'EJB/couche de service que le JSF/couche de présentation. Ce blog a une belle vue d'ensemble.
En tant que tel
@ManagedBean
ne peut pas être entièrement remplacé par la CDI, à nouveau si vous utilisez@ViewScoped
des haricots, du moins pas sans l'extension de CDI ou à l'aide de la Couture 3 Faces module. À l'aide de la vue étendue de haricots est presque toujours à se produire lors de l'utilisation de AJAXed JSF 2-kits graphiques basé sur, comme RichFaces, PrimeFaces, IceFaces, etc.Mélange des annotations de la mauvaise Java EE 6 paquets peut obtenir en difficulté de façon inattendue, de nouveau lors de l'utilisation de RichFaces ou un analogue de l'API:
sont pour les composants utilisés uniquement à la couche de présentation, ici par RichFaces, PrimeFaces, etc. Certains des composants riches en semblent avoir des problèmes avec le CDI annotée et JSF-annoté helper haricots. Si vous obtenez une étrange comportement de vos haricots (ou des haricots qui semblent ne servir à rien) le mauvais mélange des annotations peut être la cause.
Mélange JSF et CDI, comme
est possible et fonctionne dans la plupart des cas lorsqu'ils sont référencés à partir de pages JSF, cependant, il ya certaines peu connues questions/inconvénients, par exemple, lorsque à l'aide d'un champ d'application JSF qui CDI n'a pas:
Puis
peut être utilisé pour le CDI haricots directement référencé à partir de vos pages JSF autant que je sache. Je n'ai pas eu de problèmes avec les combinaisons ci-dessus, jusqu'à présent, de sorte que vous pourriez envisager de
@ManagedBean
obsolètes ici.Ce qui est à gauche est la couche de service, ici essentiellement de nature transactionnelle de l'EJB service de haricots déclaré que
principalement @javax.ejb.Apatrides. Vous pouvez même les annoter et de les utiliser Les ejb directement à partir de pages JSF - si je ne suis pas sûr si cela est souhaitable. De référence (injecter) tous les composants annotée avec @javax.ejb.*, par exemple,
@Stateless
, préférez@Inject
sur@EJB
comme décrit ici. (Probablement un ancêtre de cette réponse...)Enfin, une très belle présentation de Java EE 6, les annotations peuvent être trouvés ici:
http://www.physics.usyd.edu.au/~rennie/javaEEReferenceSheet.html
Note: ci-dessus n'est pas d'info d'un expert, mais tout simplement mon propre/la vue à partir d'un point de vue des nouveaux arrivants sur ce ridiculement confusion Java EE 6 annotations spaghetti. Plus de perspicacité n'est pas encore élaboré. J'espère que cette réponse peut supporter d'être un général, la réponse pratique à cette confusion - même si il est allé un peu trop loin dans le contexte de la question d'origine.
@ViewScope
CDI comprend et fonctionne très bien!Que je Viens de lire dans le Soudure De Référence (p. 12), @ManagedBean est maintenant superflu: