Java EE 6 Bean Management : un guide complet de @ManagedBean, @Inject et @Named
Java EE 6 présente une myriade de annotations pour la gestion des beans et l'injection de dépendances, favorisant un peu de confusion. Ce guide vise à démêler les complexités et à établir des directives d'utilisation claires pour @javax.annotation.ManagedBean, @javax.inject.Named, @javax.faces.ManagedBean et @javax.inject.Inject.
Comprendre les types de beans dans Java EE 6
Les beans gérés sont des objets dont les cycles de vie sont gérés par des conteneurs. Java EE 6 propose différents conteneurs gérant leurs propres types de beans :
Quand utiliser chaque annotation
@javax.annotation.ManagedBean
Cette annotation déclare un bean géré par le conteneur EJB. Il est utilisé pour créer des beans gérés pour les applications EJB.
@javax.inject.Named vs. @javax.faces.ManagedBean
Les deux annotations identifient les beans qui peuvent être référencé par son nom. @javax.inject.Named est utilisé pour les beans CDI et EJB, tandis que @javax.faces.ManagedBean est spécifiquement pour les beans JSF.
@javax .inject.Inject
Cette annotation est utilisée pour l'injection de dépendances dans les contextes CDI et EJB. Il injecte des beans dans d'autres beans, leur permettant d'accéder aux dépendances nécessaires.
Exemple d'utilisation
EJB :
@Stateless @ManagedBean public class MyEJB { ... }
CDI :
@Named("myBean") @RequestScoped public class MyBean { @Inject private MyService service; ... }
JSF :
@ManagedBean(name="myManagedBean") @RequestScoped public class MyManagedBean { ... }
Choisir le bon haricot
N'utilisez jamais @javax.faces.ManagedBean sauf si cela est nécessaire pour les conteneurs de servlets sans prise en charge CDI.
Utilisez les beans CDI pour la plupart des scénarios, sauf si vous avez besoin des fonctionnalités avancées de Les EJB comme la gestion des transactions ou la préservation de l'état.
Utilisez les EJB lorsque vous avez besoin d'accéder à des EJB distants ou locaux, de gérer des transactions distribuées et d'utiliser des fonctionnalités d'entreprise avancées.
Pour la prise en charge de @ViewScoped dans CDI, pensez à utiliser une bibliothèque compatible comme seam-faces ou MyFaces CODI, ou optez pour @ViewAccessScoped ou @ConversationScoped.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!