2012-07-10 22 views
22

Duplicar posible:
What's the point of beans?¿Qué es un javabean?

¿Qué es un JavaBean? ¿Para qué se usa esto? ¿Y cuáles son algunos ejemplos de código? Escuché que se usa para hacer algo con los métodos getter y setter. Estoy bastante confundido acerca de lo que es un frijol java y dónde incluso accedes a él. Busqué en Google pero no pude encontrar una respuesta definitiva.

+1

Fwiw, esta es la primera pregunta de desbordamiento de pila a aparecer cuando la búsqueda de información sobre lo que es un Java Bean está en Google. Muy útil como una pregunta "señal". –

Respuesta

39

Java Bean es una clase Java normal que tiene propiedades privadas con su método getter y setter público.

Los beans de Java se utilizan generalmente como clases auxiliares.

Ejemplo -

public class User implements java.io.Serializable { 

    private String name; 
    private Integer age; 

    public String getName(){ 
     return this.name; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 

    public Integer getAge(){ 
     return this.age; 
    } 

    public void setAge(Integer age){ 
     this.age = age; 
    } 
} 

La implementación Serializable no es obligatoria, pero es muy útil si desea persistir o transferir Javabeans fuera de la memoria de Java, por ejemplo, en disco duro o en red.

Places where JavaBeans are used?

+3

¿qué pasa con el constructor público por defecto? –

+0

@IlyaBuziuk Según [esto] (http: // stackoverflow.com/a/2291964/3775798), un constructor predeterminado público será proporcionado automáticamente por Java si no se define explícitamente. Considero que eso significa que deberías estar seguro omitiendo uno para tu definición de frijol. –

11

JavaBeans son componentes de software reutilizables para Java. Prácticamente, son clases escritas en el lenguaje de programación Java conforme a una convención particular. Se utilizan para encapsular muchos objetos en un solo objeto (el bean), de modo que se pueden pasar como un solo objeto bean en lugar de como objetos individuales múltiples. Un JavaBean es un objeto Java que es serializable, tiene un constructor de 0 argumentos y permite el acceso a propiedades usando los métodos getter y setter.

Ventajas

  • un Bean obtiene todos los beneficios de Java de "escribir una vez, ejecutar en cualquier lugar" paradigma.
  • Las propiedades, eventos y métodos de un frijol que están expuestos a otra aplicación se pueden controlar.
  • Se puede proporcionar un software auxiliar para ayudar a configurar un Bean.
  • La configuración de configuración de un Bean se puede guardar en un almacenamiento persistente y se puede restaurar más adelante.
  • Un Bean puede registrarse para recibir eventos de otros objetos y puede generar eventos que se le envían.

Desventajas

  • una clase con un constructor nullary está sujeto a ser instanciado en un estado no válido. Si un desarrollador genera una instancia de dicha 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 ha instanciado la clase en un estado no válido. El compilador no puede detectar ese problema, e incluso si está documentado, no hay garantía de que el desarrollador vea la documentación.
  • Tener que crear un getter para cada propiedad y un setter para muchas, la mayoría o todas, crea una cantidad inmensa de código repetitivo.

Ejemplo:

package beans; 

/** 
* Class <code>PersonBean</code>. 
*/ 
public class PersonBean implements java.io.Serializable { 

    private String name; 

    private boolean deceased; 

    /** No-arg constructor (takes no arguments). */ 
    public PersonBean() { 
    } 

    /** 
    * Property <code>name</code> (note capitalization) readable/writable. 
    */ 
    public String getName() { 
     return this.name; 
    } 

    /** 
    * Setter for property <code>name</code>. 
    * @param name 
    */ 
    public void setName(final String name) { 
     this.name = name; 
    } 

    /** 
    * Getter for property "deceased" 
    * Different syntax for a boolean field (is vs. get) 
    */ 
    public boolean isDeceased() { 
     return this.deceased; 
    } 

    /** 
    * Setter for property <code>deceased</code>. 
    * @param deceased 
    */ 
    public void setDeceased(final boolean deceased) { 
     this.deceased = deceased; 
    } 
} 

refieren http://en.wikipedia.org/wiki/JavaBeans

1

Si usted está hablando sobre java-habas y frijoles NO EJB, entonces aquí es la explicación ...

Un JavaBean tiene un constructor que no toma argumentos.

2. Un JavaBean tiene un conjunto de propiedades.

3. Un JavaBean tiene métodos de acceso (getXxx, o isXxx para propiedades booleanas) y métodos de mutador (setXxx) que permiten el acceso a sus propiedades subyacentes.

El tercer punto establece una clase java con variables de instancia privadas y public getter, setter.

por ejemplo:

import java.util.Date; 

public class User { 
    private Date loginDate; 
    private String name; 
    private String password; 

    public User() { } 

    public Date getLoginDate() { 
     return loginDate; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setLoginDate(Date loginDate) { 
     this.loginDate = loginDate; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public void delete() { 
     // code to delete user from database 
    } 

    public void update() { 
     // code to update user in database 
    } 

    public static User getUser(String name) { 
     // code returning a new User object 
     // populated from the database 
    } 
} 
7

Bueno, la API JavaBean define una serie de convenciones relativas a JavaBeans. De acuerdo a Wikipedia:

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 marcos de edición y activación.
  • Las propiedades de clase deben ser accesibles usando get, set, is (usado para propiedades booleanas en lugar de get) y otros métodos (los llamados métodos de acceso y métodos de mutador), siguiendo una convención de nomenclatura estándar . Esto permite una inspección y actualización automáticas y sencillas del estado de bean dentro de frameworks, muchos de los cuales incluyen editores personalizados para varios tipos de propiedades. Los Setters deben recibir solo un argumento.
  • La clase debe ser serializable. Permite que las aplicaciones y los marcos guarden, almacenen y restablezcan de manera confiable el estado del bean en una forma independiente de la VM y de la plataforma.

Muy a menudo, estos son los tipos más comunes de las clases que se pueden encontrar en una aplicación, ya que pueden ser utilizados para modelar los datos que se utiliza. Un ejemplo de un grano de este tipo puede verse a continuación:

public class Person implements Serializable 
{ 
    private String name; 
    private boolean alive; 

    public Person() 
    { 
    // constructor logic... 
    } 

    public String getName() 
    { 
    return name; 
    } 

    public void setName(String name) 
    { 
    this.name = name; 
    } 

    public boolean isAlive() 
    { 
    return alive; 
    } 

    public void setAlive(boolean alive) 
    { 
    this.alive = alive; 
    } 
} 

Como se puede ver, las propiedades se reflejan en los captadores y definidores.

HTH