JavaBeans


En la informática basada en la plataforma Java, los JavaBeans son clases que encapsulan muchos objetos en un solo objeto (el bean). Son serializables , tienen un constructor de argumento cero y permiten el acceso a las propiedades usando métodos getter y setter . El nombre "Bean" se le dio para abarcar este estándar, que tiene como objetivo crear componentes de software reutilizables para Java .

Es un componente de software reutilizable escrito en Java que se puede manipular visualmente en una herramienta de creación de aplicaciones.

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 API de Java Beans porque 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 ese componente. Se establecen mediante un método de establecimiento y se pueden obtener mediante un método de obtención.
Personalización
Un personalizador puede proporcionar una guía paso a paso que debe seguir el proceso para utilizar el componente en un contexto específico.
Eventos
Los frijoles pueden interactuar con el modelo EventObject EventListener. [ aclaración necesaria ]
Persistencia
La persistencia es la capacidad de guardar el estado actual de un Bean, incluidos los valores de las propiedades y las variables de instancia de un Bean, en un almacenamiento no volátil y recuperarlos en un momento posterior.
Métodos
Un bean debe utilizar métodos de acceso para encapsular las propiedades. Un bean puede proporcionar otros métodos para la lógica empresarial no relacionados con el acceso a las propiedades.

  • Las propiedades, eventos y métodos de un bean se pueden exponer 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 valores de configuración de un bean se pueden guardar en un almacenamiento persistente y restaurar.

  • Una clase con un constructor de argumento cero está sujeta a instanciarse en un estado no válido. [1] Si un desarrollador crea una instancia de esta clase manualmente (en lugar de hacerlo automáticamente mediante algún tipo de marco), es posible que el desarrollador no se dé cuenta de que la clase se ha instanciado de forma incorrecta. El compilador no puede detectar tal problema, e incluso si está documentado, no hay garantía de que el desarrollador vea 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 captadores para cada propiedad y definidores para muchos, la mayoría o todos ellos puede llevar a una inmensa cantidad de código repetitivo . Esto se puede mitigar con herramientas como Lombok .

La funcionalidad de JavaBeans es proporcionada por un conjunto de clases e interfaces en el paquete java.beans .

Para funcionar como una clase JavaBean , una clase de objeto debe obedecer ciertas convenciones sobre el nombre, la construcción y el comportamiento de los métodos. Estas convenciones hacen posible tener herramientas que pueden usar, reutilizar, reemplazar y conectar Java Beans.

Las convenciones requeridas son las siguientes:

  • La clase debe tener un constructor público predeterminado (sin argumentos). Esto permite una fácil creación de instancias dentro de los marcos de edición y activación.
  • La clase propiedades deben ser accesibles usando get , set , está (se puede utilizar para propiedades booleanas en lugar de conseguir), a y otros métodos (los llamados métodos de acceso y métodos de mutador ) de acuerdo con un estándar de convención de nomenclatura . Esto permite una fácil inspección y actualización automatizada del estado del bean dentro de los marcos, muchos de los cuales incluyen editores personalizados para varios tipos de propiedades. Los establecedores pueden tener uno o más de un argumento.
  • La clase debe ser serializable . (Esto permite que las aplicaciones y los marcos guarden, almacenen y restauren de manera confiable el estado del bean de una manera independiente de la máquina virtual y de la plataforma).

Ejemplo de código

 reproductor de paquetes ;público  de clase  PersonBean  implementos  java . io . Serializable  { / ** Propiedades ** /  privado  booleano  fallecido  =  falso ;  lista de  lista privada ; / ** Propiedad "nombre", legible / escribible. * /  nombre de cadena privada  = nulo ;    / ** Constructor sin argumentos (no acepta argumentos). * /  public  PersonBean ()  {  } public  List  getList ()  {  lista de retorno  ; }   setList public void  ( lista de lista final ) { this . lista = lista ; }        / **  * Getter para la propiedad "nombre".  * /  public  String  getName ()  {  nombre de retorno  ; }  / **  * Setter para la propiedad "nombre".  *  * @param value  * /  public  void  setName ( valor de cadena final  ) { this . nombre = valor ; }       / **  * Getter para propiedad "fallecido"  * Sintaxis diferente para un campo booleano (is vs get)  * /  public  boolean  isDeceased ()  {  return  fallecido ;  } / **  * Setter para propiedad "fallecido".  * @param value  * /  public  void  setDeceased ( valor booleano  ) { fallecido = valor ; } }     

TestPersonBean.java:

import  player.PersonBean ;/ ** * Clase "TestPersonBean". * / public  class  TestPersonBean  {  / **  * Método de prueba "main" para la clase "PersonBean".  *  * @param argumentos  * /  public  static  void  main ( final  String []  argumentos )  {  final  PersonBean  person  =  new  PersonBean (); persona . setName ( "Bob" );  persona . setDeceased ( falso );  persona . setList ( new  ArrayList ()); // Salida:  Sistema "Bob [vivo]" . fuera . imprimir ( persona . getName ());  Sistema . fuera . println ( person . isDeceased ()  ?  "[fallecido]"  :  "[vivo]" );  } }
 id = "person"  class = "player.PersonBean"  scope = "page" />  name = "person"  property = "*" />   Nombre:  name = "person"  property = "name" /> 
¿Falleció? name = "person" property = "falleased" />

name = "beanTest" method = "POST" action = "testPersonBean.jsp" > Ingrese un nombre: type = "text" name = "name" size = "50" >
Elige una opcion: name = "fallecido" > value = "false" > Vivo value = "true" > Muerto type = "submit" value = "Prueba el Bean " >