Qu'est-ce qu'un JavaBean exactement?


J'ai compris, je pense, qu'un "Bean" est une classe Java avec des propriétés et des getters/setters. Autant que je comprends, c'est l'équivalent d'une structure C. Est-ce vrai?

De plus, y a-t-il une vraie différence syntaxique entre un bean et une classe régulière? Existe-t-il une définition spéciale ou une interface?

Fondamentalement, pourquoi y a-t-il un terme pour cela?

Edit : Si vous pouvez être si gentil et ajouter des informations concernant l'interface Serializable, et ce que cela signifie, pour votre réponse, je vous en serais très reconnaissant.

Author: nbro, 2010-07-21

15 answers

D'Un composant JavaBean est juste un standard

  1. Toutes les propriétés privées (utiliser getters/setters)
  2. Un constructeur public sans argument
  3. met en œuvre Serializable.

C'est tout. C'est juste une convention. Beaucoup de bibliothèques en dépendent cependant.

Par rapport à Serializable, à partir de la documentation de l'API :

La sérialisabilité d'une classe est activée par la classe implémentant le java.io.Serializable interface. Classes qui ne l'implémentent pas l'interface n'aura aucun de leur état sérialisé ou désérialisé. Tous les sous-types d'une classe sérialisable sont eux-mêmes sérialisables. Le l'interface de sérialisation n'a pas de méthodes ou de champs et sert uniquement à identifier la sémantique d'être sérialisable.

En d'autres termes, les objets sérialisables peuvent être écrits dans des flux, et donc des fichiers, des bases de données d'objets, n'importe quoi vraiment.

De plus, il n'y a pas de différence syntaxique entre un JavaBean et une autre classe a une classe définit un JavaBean s'il suit les normes.

Il y a un terme pour cela car la norme permet aux bibliothèques de faire par programmation des choses avec des instances de classe que vous définissez de manière prédéfinie. Par exemple, si une bibliothèque veut diffuser n'importe quel objet que vous lui transmettez, elle sait qu'elle le peut car votre objet est sérialisable (en supposant que la bibliothèque exige que vos objets soient des JavaBeans appropriés).

 1547
Author: hvgotcodes, 2018-05-16 22:17:45

Il y a un terme pour que ça sonne spécial. La réalité est loin d'être si mystérieux.

, Fondamentalement, un "Haricot":

  • est un objet sérialisable (c'est-à-dire qu'il implémente java.io.Serializable, et le fait correctement), que
  • a des "propriétés" dont les getters et setters ne sont que des méthodes avec certains noms (comme, par exemple, getFoo() est le getter de la propriété "Foo"), et
  • a un constructeur 0-arg public (il peut donc être créé à volonté et configuré en définissant ses propriétés).

Mise à jour:

Quant à Serializable: Ce n'est rien d'autre qu'une "interface de marqueur" (une interface qui ne déclare aucune fonction) qui indique à Java que la classe d'implémentation consent à (et implique qu'elle est capable de) "sérialisation" - un processus qui convertit une instance en un flux d'octets. Ces octets peuvent être stockés dans des fichiers, envoyés via une connexion réseau, etc., et avoir suffisamment d'informations pour permettre à une JVM (au moins, celle qui connaît le type de l'objet) de reconstruisez l'objet plus tard possibly éventuellement dans une instance différente de l'application, ou même sur une toute autre machine!

Bien sûr, pour ce faire, la classe doit respecter certaines limites. Le principal d'entre eux est que tous les champs d'instance doivent être soit des types primitifs (int, bool, etc.), des instances d'une classe également sérialisable, soit marquées comme transient afin que Java n'essaie pas de les inclure. (Cela signifie bien sûr que transient les champs ne survivront pas au voyage sur un ruisseau. Un la classe qui a des champs transient doit être prête à les réinitialiser si nécessaire.)

Une classe qui ne peut pas respecter ces limitations ne devrait pas implémenter Serializable (et, IIRC, le compilateur Java ne laissera même pas le faire.)

 246
Author: cHao, 2018-10-05 12:58:32

JavaBeans sont des classes Java qui adhèrent à une convention de codage extrêmement simple. Tout ce que vous avez à faire est de

  1. Implémenter l'interface java.io.Serializable - Pour enregistrer l'état d'un objet
  2. utilisez un constructeur d'argument vide public - Pour instancier l'objet
  3. Et fournir des méthodes getter et setter publiques - Pour obtenir et définir les valeurs des variables privées (propriétés ).
 82
Author: Kamal, 2010-07-21 04:22:57

Propriétés de JavaBeans

Un JavaBean est un objet Java qui satisfait certaines conventions de programmation:

  1. La classe JavaBean doit implémenter Serializable ou Externalizable

  2. La classe JavaBean doit avoir un constructeur sans arg

  3. Toutes les propriétés JavaBean doivent avoir des méthodes public setter et getter

  4. Toutes les variables d'instance JavaBean doivent être privées

Exemple de JavaBeans

@Entity
public class Employee implements Serializable{

   @Id
   private int id;
   private String name;   
   private int salary;  

   public Employee() {}

   public Employee(String name, int salary) {
      this.name = name;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName( String name ) {
      this.name = name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}
 51
Author: Md Azaharuddin Ali, 2018-02-20 07:10:16

Les beans Java utilisent moins de code et plus d'approche de travail... Les beans Java sont utilisés dans Java EE en tant que contrat universel pour la découverte et l'accès à l'exécution. Par exemple, JavaServer Pages (JSP) utilise des Beans Java comme objets de transfert de données entre les pages ou entre les servlets et les JSP. Le framework d'activation JavaBeans de Java EE utilise des Beans Java pour intégrer la prise en charge des types de données MIME dans Java EE. L'API de gestion Java EE utilise JavaBeans comme base pour l'instrumentation des ressources à gérer dans un environnement Java EE.

À propos de la sérialisation:

Dans sérialisation d'un objet un objet peut être représenté comme une séquence d'octets qui comprend les données de l'objet ainsi que des informations sur le type de l'objet et les types de données stockées dans l'objet.

Après un objet sérialisé a été écrit dans un fichier, il peut être lu à partir du fichier et désérialisé qui est, le type d'informations et d'octets qui représentent l'objet et ses données peuvent être utilisées pour recréer l'objet en mémoire.

 18
Author: HANU, 2013-09-24 09:25:54

Vous trouverez la sérialisation utile lors du déploiement de votre projet sur plusieurs serveurs, car les beans seront conservés et transférés entre eux.

 17
Author: Truong Ha, 2010-07-21 06:03:26

Explication avec un exemple.

1. importer java. io. Serializable

En ce qui concerne la sérialisation, voir la documentation .

2. champs privés

Les champs doivent être privés pour empêcher les classes externes de modifier facilement ces champs. Au lieu d'accéder directement à ces champs, des méthodes getter/setter usuagly sont utilisées.

3. Constructeur

Un constructeur public sans aucun argument.

4. getter / setter

Méthodes Getter et setter pour accéder aux champs privés.

/** 1. import java.io.Serializable */
public class User implements java.io.Serializable {
    /** 2. private fields */
    private int id;
    private String name;

    /** 3. Constructor */
    public User() {
    }
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    /** 4. getter/setter */
    // getter
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    // setter
    public void setId(int id) {
        this.id = is;
    }
    public void setName(String name) {
        this.name = name;
    }
}
 16
Author: phi, 2017-01-08 17:14:15

Selon Wikipedia:

  1. La classe doit avoir un constructeur public par défaut (sans arguments). Cela permet une instanciation facile dans les cadres d'édition et d'activation.

  2. Les propriétés de la classe doivent être accessibles en utilisant get, set, is (peut être utilisé pour les propriétés booléennes au lieu de get), et d'autres méthodes (appelées méthodes d'accesseur et méthodes de mutateur) selon une convention de nommage standard. Cela permet une inspection et une mise à jour automatisées faciles de bean état dans les frameworks, dont beaucoup incluent des éditeurs personnalisés pour différents types de propriétés. Les setters peuvent avoir un ou plusieurs arguments.

  3. La classe doit être sérialisable. [Cela permet aux applications et aux frameworks d'enregistrer, de stocker et de restaurer de manière fiable l'état du bean indépendamment de la machine virtuelle et de la plate-forme.]

Pour plus d'informations suivez ce lien.

 9
Author: Diganta, 2014-06-16 11:41:46

Java Beans est un standard, et ses exigences de syntaxe de base ont été clairement expliquées par les autres réponses.

Cependant, OMI, c'est plus qu'une simple norme de syntaxe. La signification réelle ou l'utilisation prévue des Beans Java est, avec divers supports d'outils autour de la norme, de faciliter la réutilisation du code et l'ingénierie logicielle basée sur les composants, c'est-à-dire de permettre aux développeurs de créer des applications en assemblant des composants existants (classes) et sans avoir à écrire de code (ou seulement écrire un peu de code colle). Malheureusement, cette technologie est beaucoup sous-estimée et sous-utilisée par l'industrie, ce qui peut être dit à partir des réponses dans ce fil.

Si vous lisez le tutoriel d'Oracle sur les Beans Java, vous pouvez mieux comprendre cela.

 8
Author: Victor, 2016-05-21 15:11:54

En ce qui concerne la deuxième partie de votre question, la sérialisation est un mécanisme de persistance utilisé pour stocker des objets sous forme de séquence d'octets signés. En termes moins formels, il stocke l'état d'un objet afin que vous puissiez le récupérer plus tard, par désérialisation.

 7
Author: Mike, 2013-01-23 19:26:55

Un bean Java est une classe java [conceptuel] qui devrait suivre les conventions suivantes:

  1. Il devrait avoir un constructeur no-arg.
  2. Il devrait être sérialisable.
  3. , Il doit fournir des méthodes pour définir et obtenir les valeurs des propriétés, appelées méthodes getter et setter.

C'est un composant logiciel réutilisable. Il peut encapsuler plusieurs objets en un seul objet de sorte que le même objet soit accessible à partir de multiples endroits et constitue une étape vers une maintenance facile de code.

 7
Author: Raghav salotra, 2016-12-06 08:29:04

Ils sont sérialisables, ont un constructeur à zéro argument et permettent l'accès aux propriétés à l'aide des méthodes getter et setter. Le nom "Bean" a été donné pour englober cette norme, qui vise à créer des composants logiciels réutilisables pour Java.according to wiki

Les objets qui forment l'épine dorsale de votre application et qui sont gérés par le conteneur Spring IoC sont appelés beans. Un bean est un objet instancié, assemblé et géré par un conteneur Spring IoC. Sinon, un bean est simplement l'un des nombreux objets de votre application. according to printemps io.

 6
Author: Balman Rawat, 2016-03-06 00:26:49

Les Beans Java ne sont que des classes Java ordinaires qui suivent certaines conventions - vous n'avez pas besoin d'outils spéciaux pour les créer.

Il existe deux conventions principales qui doivent être suivies lors de la création de classes de Bean Java:

  • Chaque "propriété "de la classe Java Bean est implémentée en définissant deux fonctions publiques (une fonction" get "et une fonction" set")
  • Les "operations " de la classe Java Bean sont les autres fonctions publiques définies dans classe.
 6
Author: Pankaj Mandale, 2017-04-16 09:10:56

Pour comprendre JavaBean, vous devez noter les éléments suivants: JavaBean est une substance conceptuelle et ne peut pas représenter une classe de choses spécifiques

JavaBean est un outil de développement qui peut être visualisé dans le fonctionnement de composants logiciels réutilisables

JavaBean est basé sur la spécification Sun JavaBeans et peut être un composant réutilisable. Sa plus grande caractéristique est la réutilisation.

 2
Author: Marcus Thornton, 2013-07-19 03:43:35

Un bean Java est essentiellement une classe, ce qui classe une classe en tant que bean est: 1. Il devrait implémenter une interface sérialisable (une interface de marqueur). 2. Le constructeur doit être public et n'avoir aucun argument (ce que d'autres personnes appellent un constructeur sans argument). 3. Il devrait avoir getter et setters.

Bon à noter le champ serialVersionUID est important pour maintenir l'état de l'objet. Le code ci-dessous est qualifié de bean:

public class DataDog implements java.io.Serializable {

private static final long serialVersionUID = -3774654564564563L;

private int id;
private String nameOfDog;

//The constructor should NOT have arguments
public DataDog () {}


/** 4. getter/setter */

// getter(s)
public int getId() {
    return id;
}
public String getNameOfDog() {
    return nameOfDog;
}
// setter(s)
public void setId(int id) {
    this.id = id;
}
public void setNameOfDog(String nameOfDog) {
    this.nameOfDog = nameOfDog;
}}
 0
Author: Amos Kosgei, 2018-10-05 10:54:45