Cosa è esattamente un JavaBean?

Ho capito, penso, che un “Bean” è una class Java con proprietà e getter / setter. Per quanto ho capito, è l’equivalente di una struttura C. È vero?

Inoltre, c’è una vera differenza sintattica tra un bean e una class regolare? C’è qualche definizione speciale o un’interfaccia?

Fondamentalmente, perché c’è un termine per questo?

Modifica : Se puoi essere così gentile e aggiungere informazioni riguardanti l’interfaccia Serializable , e cosa significa, per la tua risposta, sarei molto grato.

Un JavaBean è solo uno standard

  1. Tutte le proprietà private (usa getter / setter )
  2. Un costruttore pubblico senza argomenti
  3. Attrezzi Serializable .

Questo è tutto. È solo una convenzione. Molte librerie dipendono da questo però.

Per quanto riguarda Serializable , dalla documentazione API :

La serializzabilità di una class è abilitata dalla class che implementa l’interfaccia java.io.Serializable. Le classi che non implementano questa interfaccia non avranno nessuno stato serializzato o deserializzato. Tutti i sottotipi di una class serializzabile sono anch’essi serializzabili. L’interfaccia di serializzazione non ha metodi o campi e serve solo a identificare la semantica di essere serializzabile.

In altre parole, gli oggetti serializzabili possono essere scritti su flussi e quindi file, database di oggetti, qualsiasi cosa realmente.

Inoltre, non vi è alcuna differenza sintattica tra un JavaBean e un’altra class – una class definisce un JavaBean se segue gli standard.

Esiste un termine per questo perché lo standard consente alle librerie di fare cose a livello di codice con istanze di class definite in modo predefinito. Ad esempio, se una libreria desidera eseguire lo streaming di qualsiasi object che gli passi, sa che può farlo perché il tuo object è serializzabile (assumendo che la lib richieda che gli oggetti siano JavaBeans appropriati).

C’è un termine per farlo sembrare speciale. La realtà non è affatto così misteriosa.

In sostanza, un “fagiolo”:

  • è un object serializzabile (cioè, implementa java.io.Serializable e lo fa correttamente), quello
  • ha “proprietà” i cui getter e setter sono solo metodi con determinati nomi (come, per esempio, getFoo() è il getter per la proprietà “Foo”), e
  • ha un costruttore di default pubblico (quindi può essere creato a piacimento e configurato impostando le sue proprietà).

Aggiornare:

Per quanto riguarda Serializable : Questo non è altro che una “interfaccia marker” (un’interfaccia che non dichiara alcuna funzione) che dice a Java che la class di implementazione consente (e implica che sia in grado di) “serializzazione” – un processo che converte un’istanza in un stream di byte. Questi byte possono essere archiviati in file, inviati tramite una connessione di rete, ecc. E avere informazioni sufficienti per consentire a una JVM (almeno una che conosce il tipo dell’object) di ribuild l’object in un secondo momento – possibilmente in una diversa istanza del applicazione, o anche su un’altra macchina!

Naturalmente, per fare ciò, la class deve rispettare certi limiti. Il principale tra questi è che tutti i campi di istanza devono essere di tipo primitivo (int, bool, ecc.), Istanze di alcune classi che sono anche serializzabili o contrassegnate come transient modo che Java non tenti di includerle. (Questo ovviamente significa che i campi transient non sopravviveranno al viaggio su uno stream. Una class con campi transient dovrebbe essere pronta a reinizializzarli se necessario).

Una class che non può rispettare queste limitazioni non dovrebbe implementare Serializable (e, IIRC, il compilatore Java non lo lascerà nemmeno fare).

JavaBeans sono classi Java che aderiscono a una convenzione di codifica estremamente semplice. Tutto quello che devi fare è farlo

  1. Implementare l’interfaccia java.io.Serializable – Per salvare lo stato di un object
  2. usa un costruttore di argomenti vuoto pubblico – Per istanziare l’object
  3. E fornire metodi pubblici getter e setter – Per ottenere e impostare i valori delle variabili private (proprietà).

Proprietà di JavaBeans

Un JavaBean è un object Java che soddisfa determinate convenzioni di programmazione:

  1. La class JavaBean deve implementare Serializable o Externalizable

  2. La class JavaBean deve avere un costruttore no-arg

  3. Tutte le proprietà JavaBean devono avere metodi setter e getter pubblici

  4. Tutte le variabili di istanza JavaBean devono essere private

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

I bean Java stanno usando meno codice e più approccio al lavoro … I bean Java sono usati in Java EE come contratto universale per il rilevamento e l’accesso runtime. Ad esempio, JavaServer Pages (JSP) utilizza Java Beans come oggetti di trasferimento dati tra le pagine o tra servlet e JSP. JavaBeans Activation Framework di Java EE utilizza Java Beans per integrare il supporto per i tipi di dati MIME in Java EE. L’API Java EE Management utilizza JavaBeans come base per la strumentazione delle risorse da gestire in un ambiente Java EE.

Informazioni sulla serializzazione:

Nella serializzazione dell’object un object può essere rappresentato come una sequenza di byte che include i dati dell’object, nonché informazioni sul tipo dell’object e i tipi di dati memorizzati nell’object.

Dopo che un object serializzato è stato scritto in un file, può essere letto dal file e deserializzato cioè, le informazioni sul tipo e i byte che rappresentano l’object ei suoi dati possono essere utilizzati per ricreare l’object in memoria.

La serializzazione è utile quando si distribuisce il progetto su più server poiché i bean verranno mantenuti e trasferiti su di essi.

Spiegazione con un esempio.

1. import java.io.Serializable

Per quanto riguarda la serializzazione, consultare la documentazione .

2. campi privati

I campi dovrebbero essere privati ​​per impedire alle classi esterne di modificare facilmente quei campi. Invece di accedere direttamente a quei campi, vengono utilizzati i metodi usualmente getter / setter.

3. Costruttore

Un costruttore pubblico senza argomenti.

4. getter / setter

Metodi Getter e setter per l’accesso ai campi privati.

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

Secondo la Wikipedia:

  1. La class deve avere un costruttore pubblico predefinito (senza argomenti). Ciò consente una facile istanziazione all’interno dei framework di modifica e triggerszione.

  2. Le proprietà della class devono essere accessibili usando get, set, is (può essere usato per le proprietà booleane anziché get) e altri metodi (i cosiddetti metodi accessor ei metodi mutator) secondo una convenzione di denominazione standard. Ciò consente una facile ispezione e aggiornamento automatici dello stato dei bean all’interno dei framework, molti dei quali includono editor personalizzati per vari tipi di proprietà. I setter possono avere uno o più argomenti.

  3. La class dovrebbe essere serializzabile. [Ciò consente alle applicazioni e ai framework di salvare, memorizzare e ripristinare in modo affidabile lo stato del bean in modo indipendente dalla VM e dalla piattaforma.]

Per maggiori informazioni segui questo link.

Java Beans è uno standard e i suoi requisiti di syntax di base sono stati chiaramente spiegati dalle altre risposte.

Tuttavia, IMO, è più di un semplice standard di syntax. Il significato reale o l’uso previsto di Java Beans è, insieme ai vari strumenti supportati attorno allo standard, per facilitare il riutilizzo del codice e l’ingegneria del software basata su componenti, ovvero consentire agli sviluppatori di creare applicazioni assemblando componenti esistenti (classi) e senza dover scrivere alcun codice (o solo scrivere un piccolo codice di colla). Sfortunatamente questa tecnologia è sottovalutata e poco utilizzata dall’industria, che può essere raccontata dalle risposte in questa discussione.

Se leggi il tutorial di Oracle su Java Beans , puoi capire meglio.

Per quanto riguarda la seconda parte della domanda, la serializzazione è un meccanismo di persistenza utilizzato per memorizzare oggetti come una sequenza di byte firmati. Metti meno formalmente, memorizza lo stato di un object in modo che tu possa recuperarlo in un secondo momento, mediante la deserializzazione.

Un Java Bean è una class java [concettuale] che dovrebbe seguire le seguenti convenzioni:

  1. Dovrebbe avere un costruttore no-arg.
  2. Dovrebbe essere serializzabile.
  3. Dovrebbe fornire metodi per impostare e ottenere i valori delle proprietà, noti come metodi getter e setter.

È un componente software riutilizzabile. Può incapsulare molti oggetti in un unico object in modo che lo stesso object possa essere accessibile da più posti ed è un passo verso una facile manutenzione del codice.

Sono serializzabili, hanno un costruttore di argomenti zero e consentono l’accesso alle proprietà usando i metodi getter e setter. Il nome “Bean” è stato dato per comprendere questo standard, che mira a creare componenti software riutilizzabili per Java. according to wiki

Gli oggetti che formano la spina dorsale della tua applicazione e che sono gestiti dal contenitore IoC di spring sono chiamati bean. Un bean è un object che viene istanziato, assemblato e gestito in altro modo da un contenitore IoC di spring. Altrimenti, un bean è semplicemente uno dei tanti oggetti nella tua applicazione. according to spring io .

I Java Beans sono semplici classi Java che seguono alcune convenzioni: non è necessario disporre di strumenti speciali per crearle.

Esistono due principali convenzioni che devono essere seguite nella creazione delle classi Java Bean:

  • Ogni ” proprietà ” della class Java Bean viene implementata definendo due funzioni pubbliche (una funzione “get” e una funzione “set”)
  • Le ” operazioni ” della class Java Bean sono le altre funzioni pubbliche definite nella class.

Per capire JavaBean devi notare quanto segue: JavaBean è un materiale concettuale e non può rappresentare una class di cose specifiche

JavaBean è uno strumento di sviluppo che può essere visualizzato nel funzionamento di componenti software riutilizzabili

JavaBean è basato sulla specifica Sun JavaBeans e può essere componenti riutilizzabili. La sua più grande caratteristica è la riutilizzabilità.