web-dev-qa-db-fra.com

Qu'est-ce qu'un bean Java?

Duplicata possible:
Quel est l'intérêt des haricots?

Qu'est-ce qu'un javabean? A quoi cela sert? Et quels sont quelques exemples de code? J'ai entendu dire qu'il est utilisé pour quelque chose à voir avec les méthodes getter et setter? Je suis assez confus sur ce qu'est un bean Java et où vous y accédez même. Je l'ai cherché sur Google mais je n'ai pas pu trouver de réponse définitive.

34
Ryan Glen

Java Bean est une classe normale Java qui possède des propriétés privées avec sa méthode getter et setter publique.

Les Java Beans sont généralement utilisés comme classe d'assistance.

Exemple -

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;
    }
}

L'implémentation de Serializable n'est pas obligatoire mais est très utile si vous souhaitez conserver ou transférer des Javabeans en dehors de la mémoire de Java, par ex. sur le disque dur ou sur le réseau.

Endroits où JavaBeans sont utilisés?

49
Pramod Kumar

Les JavaBeans sont des composants logiciels réutilisables pour Java. En pratique, ce sont des classes écrites dans le Java conforme à une convention particulière. Elles sont utilisées pour encapsuler de nombreux objets en un seul objet (le bean), afin qu'ils puissent être transmis comme un seul objet bean au lieu de plusieurs objets individuels. Un JavaBean est un Java objet sérialisable, possède un constructeur à 0 argument et permet d'accéder aux propriétés à l'aide des méthodes getter et setter.

Les avantages

  • Un bean obtient tous les avantages du paradigme Java "écrire une fois, exécuter n'importe où".
  • Les propriétés, événements et méthodes d'un bean exposés à une autre application peuvent être contrôlés.
  • Un logiciel auxiliaire peut être fourni pour aider à configurer un bean.
  • Les paramètres de configuration d'un bean peuvent être enregistrés dans un stockage persistant et peuvent être restaurés ultérieurement.
  • Un Bean peut s'enregistrer pour recevoir des événements d'autres objets et peut générer des événements qui lui sont envoyés.

Désavantages

  • Une classe avec un constructeur nul peut être instanciée dans un état non valide. Si une telle classe est instanciée manuellement par un développeur (plutôt que automatiquement par une sorte de framework), le développeur peut ne pas se rendre compte qu'il a instancié la classe dans un état non valide. Le compilateur ne peut pas détecter un tel problème, et même s'il est documenté, rien ne garantit que le développeur verra la documentation.
  • Devoir créer un getter pour chaque propriété et un setter pour beaucoup, la plupart ou la totalité d'entre eux, crée une immense quantité de code passe-partout.

Exemple :

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;
    }
}

se référer http://en.wikipedia.org/wiki/JavaBeans

21
Hemant Metalia

Eh bien, l'API JavaBean définit un certain nombre de conventions concernant JavaBeans. Selon Wikipedia:

Les conventions requises sont les suivantes:

  • La classe doit avoir un constructeur par défaut public (sans argument). Cela permet une instanciation facile dans les cadres d'édition et d'activation.
  • Les propriétés de classe doivent être accessibles à l'aide de get, set, is (utilisé pour les propriétés booléennes au lieu de get) et d'autres méthodes (méthodes appelées accesseurs et méthodes de mutation), suivant une convention de dénomination standard. Cela permet une inspection et une mise à jour automatisées faciles de l'état du bean dans les frameworks, dont beaucoup incluent des éditeurs personnalisés pour différents types de propriétés. Les setters ne doivent recevoir qu'un seul argument.
  • La classe doit être sérialisable. Il permet aux applications et aux frameworks de sauvegarder, stocker et restaurer de manière fiable l'état du bean d'une manière indépendante de la VM et de la plateforme).

Très souvent, ce sont les types de classes les plus courants que l'on peut trouver dans une application, car ils peuvent être utilisés pour modéliser les données utilisées. Un exemple d'un tel bean peut être vu ci-dessous:

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;
  }
}

Comme vous pouvez le voir, les propriétés se reflètent dans les getters et setters.

HTH

7
Crollster

Si vous parlez Java-beans et PAS EJB Beans, alors voici l'explication ...

1. Un JavaBean a un constructeur qui ne prend aucun argument.

2. Un JavaBean a un ensemble de propriétés.

. Un JavaBean possède des méthodes d'accesseur (getXxx ou isXxx pour les propriétés booléennes) et des méthodes de mutation (setXxx) qui permettent d'accéder à ses propriétés sous-jacentes.

Le 3ème point indique une classe Java classe avec des variables d'instance privées et getter public, setter.

par exemple:

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
    }
}
1
Kumar Vivek Mitra