jsf javabeans managed-bean backing-beans

jsf - Diferencia entre el frijol administrado y el bean de respaldo



javabeans managed-bean (11)

Me encontré con los términos "beans administrado" y "bean de respaldo" en varios foros. Mucha gente piensa que ambos son lo mismo. Pero, parece haber una ligera diferencia. ¿Alguien puede ayudarme a entender la diferencia exacta entre estos dos términos?


Backing Bean es cualquier bean enlazado con JSF UI. mientras que Bean administrado es cualquier frijol


Backing Bean es una especie de Managed Bean. Manage Bean es un objeto (es decir, una instancia de una clase), creado por un contenedor (por eso se llama managed) y por supuesto ese objeto tiene una clase y si te apetece, puedes crear tantas instancias de esa clase sin importa qué anotación tengan con m = new MyManagedBean (), solo será un Bean no tan administrado o al menos no administrado por un contenedor pero administrado por usted :)

Y Backing Bean es una especie de bean administrado (como lo dice Santosh: una convención) que generalmente usa el requestScope de JSF (pero en algunos frameworks como ADF incluso hay un alcance designado solo para respaldos llamado backingBeanScope - nunca hubieras adivinado) .

Y sí ... El sabor de los beans administrados jsf que uno llamaría BackingBeans se usa para enlazar UIComponents y escribir ActionListeners, mientras que digamos que el sabor de "beans modelo" iría en el ámbito de la sesión, por ejemplo, y mantendría sus datos


Cambiar mi respuesta inicial: no hay diferencia significativa entre los dos. El tutorial dice que los beans de respaldo se declaran más tarde como beans administrados. Entonces, para resumir:

  • un bean de respaldo es la clase fuera de contexto
  • un bean gestionado es el bean de respaldo siempre que se declara que se usa con la facilidad de beans gestionados de JSF.

Nunca usé realmente el término "respaldo de frijol" porque no me resultó útil. Así que es mejor que uses solo "beans administrados". Tenga en cuenta que en JSF 2.0 (y en CDI) tiene @ManagedBean , por lo que su bean es un bean administrado.

BalusC sugirió que "backing bean" es la definición, y "managed bean" es la instancia. Si bien esta podría haber sido la idea original de los creadores de JSF, no creo que valga la pena apoyarla. El CDI y la primavera, por ejemplo, no tienen un término diferente para "definición de frijol" y "instancia de frijol".

La especificación JSF 2.0 menciona el término "bean de respaldo" solo unas pocas veces, sin definición alguna. Además de eso, menciona "clase de bean de respaldo", lo que podría significar que "bean de respaldo"! = "Clase de bean de respaldo", lo que genera una mayor confusión.

Así que para concluir, para mí, ambos son intercambiables, y me limitaría a usar solo "beans gestionados"


De este enlace JSF - beans administrados

Manage Bean:

Managed Bean es una clase regular de Java Bean registrada con JSF. En otras palabras, Managed Beans es un Java Bean administrado por JSF framework.

Desde este enlace Creación y uso de un grano de respaldo para una página web :

Backing Bean:

En JSF, los beans de respaldo son JavaBeans utilizados principalmente para proporcionar lógica de UI y para administrar datos entre el nivel web y el nivel comercial de la aplicación (similar a un objeto de transferencia de datos). Normalmente tiene un bean de respaldo por página JSF. El bean de respaldo contiene la lógica y las propiedades de los componentes de UI utilizados en la página.

NÓTESE BIEN:

Para que un bean de respaldo esté disponible cuando se inicia la aplicación, lo registra como un bean administrado con un nombre y un alcance


Diría que el bean de respaldo es un bean utilizado estrictamente para propósitos de UI, es decir, referenciado en los archivos jsp. Después de todo, todos los beans administrados por el contenedor JSF son beans administrados, sin embargo, existen diferentes contextos en los que se pueden usar. Para obtener más información, vea la respuesta aceptada aquí: JSF: ManagedBean, ¿Buen lugar para lidiar con Business Logic?


Simplemente pon,

Usted como desarrollador:

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

JSF como marco de gestión de frijoles lo hace bajo las coberturas:

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

Por lo tanto, el bean de respaldo es la clase concreta desarrollada por usted y generalmente vinculada a la vista, y el bean gestionado es la instancia concreta, que está bajo las cubiertas creadas y puestas en el alcance deseado por el marco de gestión de beans a pedido. y disponible por #{managedBean} en EL. Nunca necesita crear y ponerlo en el alcance usted mismo. Si lo hizo, entonces no hay medios para un frijol administrado por el marco.

CDI @Named y Spring @Component hacen esencialmente lo mismo que JSF @ManagedBean .

Para obtener más información sobre cómo los marcos de gestión de beans como JSF, CDI y Spring encuentran y crean sus beans administrados, el siguiente solucionador de problemas debería proporcionar información detallada: Identificar y resolver javax.el.PropertyNotFoundException: Target Inalcanzable .

Ver también:


Tomé un curso muy bueno (costoso) en JSF. Lo que aprendí es lo que se explica en http://www.avromroyfaderman.com/2008/07/from-backing-bean-to-managed-bean/ .

Quizás esta diferencia no sea la diferencia teórica o la etimología de los términos, pero sin duda es una forma muy práctica de configurar su arquitectura, especialmente si usted es parte de un gran proyecto con múltiples desarrolladores y / o necesita mantener una gran cantidad de código durante mucho tiempo. Básicamente, la idea es que coloque su lógica de negocios de interfaz de usuario en beans administrados. Los beans de respaldo son escasos y solo admiten la página en sí.


http://docs.oracle.com/javaee/5/tutorial/doc/bnaqm.html dice

Una aplicación JavaServer Faces típica incluye uno o más beans de respaldo, cada uno de los cuales es un bean gestionado JavaServer Faces que está asociado con los componentes de UI utilizados en una página en particular. Los beans administrados son componentes de JavaBeans (consulte Componentes de JavaBeans) que puede configurar utilizando el recurso de bean administrado, que se describe en Configuración de beans. Esta sección presenta los conceptos básicos sobre la creación, configuración y uso de respaldos en una aplicación.

http://docs.oracle.com/javaee/6/tutorial/doc/bnaqm.html no hace mención de "backing bean".


¿Qué es Managed Bean?

Los objetos JavaBean gestionados por una implementación JSF se denominan beans administrados. Un bean administrado describe cómo se crea y administra un bean. No tiene nada que ver con las funcionalidades del grano.

¿Qué es Backing Bean?

Los respaldos son componentes de JavaBeans asociados con los componentes de la interfaz de usuario utilizados en una página. La administración de backing-bean separa la definición de los objetos del componente UI de los objetos que realizan el procesamiento específico de la aplicación y los datos de retención. El bean de respaldo define las propiedades y las lógicas de manejo asociadas con los componentes de UI utilizados en la página. Cada propiedad de backing-bean está vinculada a una instancia de componente o a su valor. Backing Bean también define un conjunto de métodos que realizan funciones para el componente, como la validación de los datos del componente, el manejo de los eventos que el componente dispara y el procesamiento asociado a la navegación cuando el componente se activa.

¿Cuáles son las diferencias entre un Backing Bean y Managed Bean?

Backing Beans es simplemente una convención, un subtipo de JSF Managed Beans que tienen un propósito muy particular. No hay nada especial en un Backing Bean que lo diferencie de cualquier otro beans administrado aparte de su uso.

MB : Manage Bean; BB : Backing Bean

1) BB : Un bean de respaldo es cualquier bean al que hace referencia un formulario.

MB : Un bean administrado es un bean de respaldo que se ha registrado con JSF (en faces-config.xml) y se creó automáticamente (y opcionalmente se inicializó) mediante JSF cuando es necesario.

La ventaja de los beans administrados es que el marco JSF creará automáticamente estos beans, opcionalmente los inicializará con los parámetros que especifique en faces-config.xml.

2) BB : los beans de respaldo se deben definir solo en el alcance de la solicitud

MB : los beans administrados que se crean mediante JSF se pueden almacenar dentro de la solicitud, la sesión o los ámbitos de la aplicación .

Los beans de respaldo deben definirse en el alcance de la solicitud, existir en una relación de uno a uno con una página en particular y contener todo el código de manejo de eventos específico de la página. En un escenario del mundo real, es posible que varias páginas necesiten compartir el mismo bean detrás de escena. Un bean de respaldo no solo contiene datos de vista, sino también un comportamiento relacionado con esos datos.


Los beans administrados se administran (instancian y destruyen) por contenedor.

Los Backing Beans son beans administrados que respaldan las vistas como modelos de datos.


Manage Bean:

Un bean administrado es un bean de respaldo que se ha registrado con JSF (en faces-config.xml) o usando Anotaciones. Managed Bean creado automáticamente (y opcionalmente inicializado) por JSF cuando es necesario.

Si usa Managed Bean en su aplicación, debe usar la siguiente sintaxis en la página JSF para establecer u obtener valores de bean

<h:inputText value="#{user.name}"/>

Backing Bean:

Un bean que contiene algunos o todos los objetos componentes de un formulario web. Tal bean se llama un bean de respaldo para el formulario web.

Cuando utiliza un bean de respaldo, necesita conectar los componentes del formulario a los del bean. Utiliza el atributo de enlace para este propósito

Ejemplo:

<h:inputText binding="#{myForm.myComponent}" .../>

Observe cómo estamos obteniendo o estableciendo valores para Backing Bean.

Los beans de respaldo se deben definir en el alcance de la solicitud, existen en una relación de uno a uno con una página en particular y contienen todo el código de manejo de eventos específico de la página.

Espero que sea útil para alguien.