Articulo de referencia

JavaBeans

En la informática basada en la plataforma Java , JavaBeans es una tecnología desarrollada por Sun Microsystems y lanzada en 1996 como parte del JDK 1.1. Las clases JavaBeans, de...

En la informática basada en la plataforma Java , JavaBeans es una tecnología desarrollada por Sun Microsystems y lanzada en 1996 como parte del JDK 1.1.

Las clases JavaBeans, denominadas «beans», encapsulan uno o más objetos en un único objeto estandarizado (el bean). Esta estandarización permite gestionar los beans de forma más genérica, facilitando la reutilización del código y la introspección . Esto, a su vez, permite tratar los beans como componentes de software y manipularlos visualmente mediante editores e IDE sin necesidad de configuración inicial ni de conocer detalles de implementación internos.

Como parte de la estandarización, todos los beans deben ser serializables , tener un constructor sin argumentos y permitir el acceso a las propiedades mediante métodos getter y setter .

Características

Introspección
La introspección es un proceso de análisis de un Bean para determinar sus capacidades. Esta es una característica esencial de la especificación Java Beans, ya que permite que otra aplicación, como una herramienta de diseño, obtenga información sobre un componente.
Propiedades
Una propiedad es un subconjunto del estado de un Bean. Los valores asignados a las propiedades determinan el comportamiento y la apariencia de dicho componente. Se establecen mediante un método setter y se pueden obtener mediante un método getter.
Personalización
Un personalizador puede proporcionar una guía paso a paso que el proceso debe seguir para utilizar el componente en un contexto específico.
Eventos
Los beans pueden interactuar con el modelo EventListener de EventObject.
Persistencia
La persistencia es la capacidad de guardar el estado actual de un Bean, incluidos los valores de sus propiedades y variables de instancia, en un almacenamiento no volátil y recuperarlos posteriormente.
Métodos
Un Bean debe usar métodos de acceso para encapsular las propiedades. Un Bean puede proporcionar otros métodos para la lógica de negocio no relacionada con el acceso a las propiedades.

Ventajas

  • Las propiedades, los eventos y los métodos de un bean pueden exponerse a otra aplicación.
  • Un bean puede registrarse para recibir eventos de otros objetos y puede generar eventos que se envían a esos otros objetos.
  • Se puede proporcionar software auxiliar para ayudar a configurar un bean.
  • Los ajustes de configuración de un bean se pueden guardar en un almacenamiento persistente y restaurar.

Desventajas

  • Una clase con un constructor sin argumentos puede instanciarse en un estado inválido. [ 1 ] Si un desarrollador instancia dicha clase manualmente (en lugar de automáticamente mediante algún framework), es posible que no se dé cuenta de que la instanciación ha sido incorrecta. El compilador no puede detectar este problema, e incluso si está documentado, no hay garantía de que el desarrollador consulte la documentación.
  • Los JavaBeans son inherentemente mutables y, por lo tanto, carecen de las ventajas que ofrecen los objetos inmutables . [ 1 ]
  • Tener que crear métodos getter para cada propiedad y métodos setter para muchas, la mayoría o todas ellas puede generar una inmensa cantidad de código repetitivo .

API de JavaBeans

La funcionalidad de JavaBeans la proporciona un conjunto de clases e interfaces en el java.beanspaquete.

Convenciones de JavaBean

Para funcionar como una clase JavaBean , una clase de objeto debe cumplir con ciertas convenciones sobre la nomenclatura, la construcción y el comportamiento de los métodos. Estas convenciones permiten disponer de herramientas que pueden usar, reutilizar, reemplazar y conectar JavaBeans.

Las convenciones requeridas son las siguientes:

  • La clase debe tener un constructor público por defecto (sin argumentos). Esto permite una fácil instanciación dentro de los marcos de edición y activación.
  • Las propiedades de la clase deben ser accesibles mediante get , set , is (que puede usarse para propiedades booleanas en lugar de get), to y otros métodos (los llamados métodos de acceso y métodos de modificación ) según una convención de nomenclatura estándar . Esto permite una fácil inspección y actualización automatizada del estado del bean dentro de los frameworks, muchos de los cuales incluyen editores personalizados para varios tipos de propiedades. Los setters pueden tener uno o más argumentos.
  • La clase debe ser serializable . (Esto permite que las aplicaciones y los frameworks guarden, almacenen y restauren el estado del bean de forma fiable, independientemente de la máquina virtual y de la plataforma).

Ejemplo de código

paquete org.wikipedia.players ;import java.io.Serializable ; import java.util.List ;public class PersonBean implements Serializable { /** Propiedades **/ private boolean fallecido = false ;Lista privada < Cadena > lista ;/** Propiedad "nombre", legible/escribible. */ private String nombre = null ;/** Constructor sin argumentos (no toma argumentos). */ public PersonBean () {}public List < String > getList () { return list ; } public void setList ( final List < String > list ) { this . list = list ; }/**  * Método getter para la propiedad "name".  */ public String getName () { return name ; }/**  * Método para establecer el valor de la propiedad "name".  *  * @param value  */ public void setName ( final String value ) { this . name = value ; }/**  * Método get para la propiedad "deceased"  * Sintaxis diferente para un campo booleano (is vs get)  */ public boolean isDeceased () { return " deceased" ; }/**  * Método para establecer la propiedad "deceased".  * @param value  */ public void setDeceased ( boolean value ) { spent = value ; } }

TestPersonBean.java:

paquete org.wikipedia.players ;import java.util.ArrayList ;import org.wikipedia.players.PersonBean ;/** * Clase "TestPersonBean". */ public class TestPersonBean { /**  * Método de prueba "main" para la clase "PersonBean".  *  * @param arguments  */ public static void main ( String [] args ) { final PersonBean person = new PersonBean ();persona.setName ( " Bob " ) ; persona.setDeceased ( false ) ; persona.setList ( new ArrayList <String> ( ) ) ;// Salida : " Bob está [vivo]" System.out.printf ( " %s está %s%n" , person.getName ( ), person.isDeceased ( ) ? "[fallecido]" : "[vivo] " ) ; } }
<jsp:useBean id= "person" class= "org.wikipedia.players.PersonBean" scope= "page" /> <jsp:setProperty name= "person" property= "*" /><html> <body> Nombre: <jsp:getProperty name= "person" property= "name" /><br/> ¿ Fallecido? <jsp:getProperty name= "person" property= "deceased" /><br/> <br/> <form name= "beanTest" method= "POST" action= "testPersonBean.jsp" > Introduzca un nombre: <input type= "text" name= "name" size= "50" ><br/> Elija una opción: <select name= "deceased" > <option value= "false" > Vivo </option> <option value= "true" > Fallecido </option> </select> <input type= "submit" value= "Probar el Bean" > </form> </body> </html>

Véase también

Referencias

  1. 1 2 Bloch, Joshua (2008). Java eficaz (Segunda  edición). Addison-Wesley. pág . 13. ISBN  978-0-321-35668-0.
  • Tutoriales de JavaBeans de Oracle
  • Especificación JavaBeans