web-dev-qa-db-fra.com

Différence entre le bean géré et le bean de sauvegarde

Je suis tombé sur les termes "bean géré" et "bean de sauvegarde" dans plusieurs forums. Beaucoup de gens pensent que les deux sont identiques. Mais il semble y avoir une légère différence. Quelqu'un peut-il m'aider à comprendre la différence exacte entre ces deux termes?

60
Krishna

Changer ma réponse initiale - il n'y a pas de différence significative entre les deux. Le tutoriel indique que les beans de sauvegarde sont déclarés ultérieurement comme des beans gérés. Donc, pour résumer:

  • un bean backing est la classe hors contexte
  • un bean géré est le bean de sauvegarde chaque fois qu'il est déclaré être utilisé avec la fonction de bean géré JSF.

Je n'ai jamais utilisé le terme "backing bean", car je n'y ai pas trouvé d'utilité. Il serait donc préférable de n'utiliser que du "bean géré". Notez que dans JSF 2.0 (et dans CDI) vous avez @ManagedBean- donc votre bean est un bean géré.

BalusC a suggéré que "backing bean" est la définition et "managed bean" en est l'instance. Bien que cela ait pu être l'idée originale des créateurs JSF, je ne pense pas que cela vaille la peine de la soutenir. CDI et spring par exemple n'ont pas de terme différent pour "définition de bean" et "instance de bean".

La spécification JSF 2.0 ne mentionne le terme "backing bean" que quelques fois, sans aucune définition. En plus de cela, il mentionne "backing bean class", ce qui pourrait signifier que "backing bean"! = "Backing bean class", ce qui apporte encore plus de confusion.

Donc, pour conclure - pour moi, les deux sont interchangeables, et je m'en tiendrai uniquement à l'utilisation de "beans gérés"

64
Bozho

Qu'est-ce que le bean géré?

Les objets JavaBean gérés par une implémentation JSF sont appelés beans gérés. Un bean géré décrit comment un bean est créé et géré. Cela n'a rien à voir avec les fonctionnalités du bean.

Qu'est-ce que Backing Bean?

Les beans de sauvegarde sont des composants JavaBeans associés aux composants d'interface utilisateur utilisés dans une page. La gestion du bean sauvegarde sépare la définition des objets composant l'interface utilisateur des objets qui effectuent un traitement spécifique à l'application et contiennent des données. Le bean de sauvegarde définit les propriétés et les logiques de gestion associées aux composants d'interface utilisateur utilisés sur la page. Chaque propriété de backing-bean est liée à une instance de composant ou à sa valeur. Le bean de sauvegarde définit également un ensemble de méthodes qui exécutent des fonctions pour le composant, telles que la validation des données du composant, la gestion des événements déclenchés par le composant et le traitement associé à la navigation lorsque le composant est activé.

Quelles sont les différences entre un bean de sauvegarde et un bean géré?

Les Backing Beans ne sont qu'une convention, un sous-type de JSF Managed Beans qui ont un objectif très particulier. Il n'y a rien de spécial dans un bean de sauvegarde qui le rend différent de tout autre bean géré en dehors de son utilisation.

MB : Bean géré; BB : Backing Bean

1) BB : Un bean de sauvegarde est un bean référencé par un formulaire.

MB : Un bean géré est un bean de sauvegarde qui a été enregistré avec JSF (dans faces-config.xml) et il a été automatiquement créé (et éventuellement initialisé) par JSF quand c'est nécessaire.

L'avantage des beans gérés est que le framework JSF crée automatiquement ces beans, éventuellement les initialise avec les paramètres que vous spécifiez dans faces-config.xml.

2) BB : les beans de sauvegarde doivent être définis uniquement dans la portée de la demande

MB : les beans gérés créés par JSF peuvent être stockés dans les champs d'application de demande, de session ou d'application .

Les beans de sauvegarde doivent être définis dans la portée de la demande, exister dans une relation un à un avec une page particulière et contenir tout le code de gestion d'événements spécifique à la page. Dans un scénario réel, plusieurs pages peuvent avoir besoin de partager le même bean de sauvegarde en arrière-plan. Un bean de sauvegarde contient non seulement des données de vue, mais également un comportement lié à ces données.

16
Santosh

Le bean de sauvegarde est un bean lié à l'interface utilisateur JSF. tandis que le bean géré est un bean

10
Jigar Joshi

Tout simplement,

En tant que développeur, vous:

@ManagedBean(name="managedBean")
@RequestScoped
public class BackingBean {
    // ...
}

JSF comme le cadre de gestion du bean fait sous les couvertures:

BackingBean managedBean = new BackingBean();
externalContext.getRequestMap().put("managedBean", managedBean);

Ainsi, le bean de sauvegarde est la classe concrète que vous développez et généralement liée à la vue, et le bean géré est l'instance concrète, qui se trouve sous les couvertures créées et mises à la portée souhaitée par le cadre de gestion du bean à la demande, et disponible par #{managedBean} dans EL. Vous n'avez jamais besoin de le créer et de le mettre vous-même dans le champ d'application. Si vous l'avez fait, il n'y a aucun moyen d'utiliser un bean géré par le framework.

CDI @Named et printemps @Component fait essentiellement la même chose que JSF @ManagedBean.

Pour en savoir plus sur la façon dont les cadres de gestion de bean tels que JSF, CDI et Spring trouvent et créent leurs beans gérés, l'utilitaire de résolution des problèmes suivant doit fournir des informations détaillées: Identification et résolution de javax.el.PropertyNotFoundException: cible inaccessible .

Voir également:

8
BalusC

http://docs.Oracle.com/javaee/5/tutorial/doc/bnaqm.html dit

Une application JavaServer Faces typique comprend un ou plusieurs beans de sauvegarde, chacun étant un bean géré JavaServer Faces associé aux composants d'interface utilisateur utilisés dans une page particulière. Les beans gérés sont des composants JavaBeans (voir Composants JavaBeans) que vous pouvez configurer à l'aide de la fonction de bean géré, décrite dans Configuration des beans. Cette section présente les concepts de base sur la création, la configuration et l'utilisation de beans de sauvegarde dans une application.

http://docs.Oracle.com/javaee/6/tutorial/doc/bnaqm.html ne fait aucune mention de "backing bean".

4
Philip Durbin

Beans Managed sont gérés (instanciés et détruits) par container.

Backing Beans sont des beans gérés qui sauvegardent les vues en tant que modèles de données.

2
abbas

Je dirais que le bean de sauvegarde est un bean utilisé strictement à des fins d'interface utilisateur, c'est-à-dire référencé dans les fichiers jsp. Après tout, tous les beans gérés par le conteneur JSF sont des beans gérés, mais il existe différents contextes dans lesquels ils peuvent être utilisés. Pour plus d'informations, voir la réponse acceptée ici: JSF: ManagedBean, bon endroit pour gérer la logique métier?

1
al.