O que é um JavaBean exatamente?

{[[2]} eu entendi, eu acho, que um "Bean" é uma classe Java com propriedades e getters/setters. Tanto quanto sei, é o equivalente a uma estrutura C. É verdade?

Além disso, existe uma verdadeira diferença sintática entre um feijão e uma classe regular? Existe alguma definição especial ou uma interface?

Basicamente, porque há um termo para isto?

Edit : Se você pode ser tão gentil e adicionar informações sobre a interface {[[0]}, e o que ele quer dizer, para sua resposta, ficaria muito grato.

Author: nbro, 2010-07-21

15 answers

Um JavaBean é apenas um padrão

  1. todas as propriedades privadas (usar getters/setters)
  2. um construtor sem argumentos
  3. instrumentos Serializable.
É isso. É só uma convenção. Muitas bibliotecas dependem disso.

No que diz respeito a Serializable, da documentação da API:

A serialização de uma classe é activada pela classe que implementa a java. io. serializável interface. Classes que não implementam isto interface não terá nenhum de seu estado serializado ou deserializado. Todos os subtipos de uma classe serializável são eles mesmos serializáveis. O interface de serialização não tem métodos ou campos e serve apenas para identifique a semântica de ser serializável.

Em outras palavras, objetos serializáveis podem ser escritos em fluxos, e, portanto, arquivos, bases de dados de objetos, qualquer coisa realmente.

Além disso, não há diferença sintática. entre um JavaBean e outra classe -- uma classe define um JavaBean se ele segue os padrões.

Existe um termo para isso porque o padrão permite que as bibliotecas façam coisas programaticamente com instâncias de classe que você define de uma forma predefinida. Por exemplo, se uma biblioteca quiser transmitir qualquer objeto que você passe para ela, ela sabe que pode porque seu objeto é serializável (assumindo que a lib requer que seus objetos sejam JavaBeans adequados).

 1547
Author: hvgotcodes, 2018-05-16 22:17:45
Há um termo que o faz parecer especial. A realidade não é tão misteriosa. Basicamente, um "feijão":
  • é um objeto serializável (ou seja, implementa java.io.Serializable, e faz isso corretamente), que
  • tem "propriedades" cujos getters e setters são apenas métodos com certos nomes (como, digamos, getFoo() é o getter para a propriedade "Foo"), e
  • tem um construtor público 0-arg (para que possa ser criado à vontade e configurado por configurar as suas propriedades).

Actualização:

Quanto a Serializable: isto não é nada mais que uma "interface de marcação" (uma interface que não declara quaisquer funções) que diz a Java que a classe de implementação consente (e implica que ela é capaz de) "serialização" -- um processo que converte uma instância em um fluxo de bytes. Esses bytes podem ser armazenados em arquivos, enviados através de uma conexão de rede, etc, e ter informações suficientes para permitir um JVM (pelo menos, um que sabe sobre o objeto tipo) para reconstruir o objeto mais tarde -- possivelmente em uma instância diferente da aplicação, ou mesmo em uma máquina inteira!

É claro que, para isso, a classe tem de respeitar certas limitações. O principal entre eles é que todos os campos de instância devem ser tanto tipos primitivos (int, bool, etc), instâncias de alguma classe que também é serializável, ou marcados como transient de modo que Java não vai tentar incluí-los. (Isto significa, naturalmente, que os campos não sobreviverão à viagem sobre um fluxo. Uma classe que tenha Campos transient deve estar preparada para reinicializá-los se necessário.)

Uma classe que não pode cumprir essas limitações não deve implementar {[[2]} (e, IIRC, o compilador Java não vai sequer deixar fazê-lo.)

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

JavaBeans são classes Java que aderem a uma convenção de codificação extremamente simples. Tudo o que tens de fazer é ...

  1. implementar a interface java.io.serializável - para salvar o estado de um objecto
  2. Usar um construtor de argumentos público vazio-para instanciar o objecto
  3. e fornecer métodos de getter e setter públicos-para obter e definir os valores das variáveis privadas (propriedades ).
 82
Author: Kamal, 2010-07-21 04:22:57

Propriedades do JavaBeans

Um JavaBean é um objeto Java que satisfaz certas convenções de programação:

  1. A classe JavaBean deve implementar Serializable ou Externalizable

  2. A classe JavaBean deve ter um construtor no-arg

  3. Todas as propriedades JavaBean devem ter métodos de setter e getter públicos

  4. Todas as variáveis de instância JavaBean devem ser privadas

Exemplo 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

Os feijões Java estão a usar para menos código e mais abordagem de trabalho... Java Beans são usados ao longo de Java EE como um contrato universal para a descoberta e acesso em tempo de execução. Por exemplo, JavaServer Pages (JSP) usa Java Beans como objetos de transferência de dados entre páginas ou entre servlets e JSPs. Java EE's JavaBeans Activation Framework uses Java Beans for integrating support for MIME data types into Java EE. A API de gestão Java EE usa JavaBeans como base para a instrumentação de recursos a serem gerenciados em um ambiente Java EE.

Sobre A Serialização:

Na serialização de objetos um objeto pode ser representado como uma seqüência de bytes que inclui os dados do objeto, bem como informações sobre o tipo de objeto e os tipos de dados armazenados no objeto.

Depois de um objeto serializado foi escrito em um arquivo, ele pode ser lido a partir do arquivo e desserializado que é, o tipo de informação e bytes que representam o objeto e seus dados podem ser usados para recriar o objecto na memória.

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

Você vai achar a serialização útil ao implementar o seu projecto através de vários servidores, uma vez que os feijões serão persistidos e transferidos através deles.

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

Explicação com um exemplo.

1. importar java. io. serializável

Quanto à serialização, veja a documentação .

2. campos privados

Os campos devem ser privados para evitar que as classes exteriores modifiquem facilmente esses campos. Em vez de acessar diretamente a esses campos, usuagly getter/setter métodos são usados.

3. Construtor

Um construtor público sem argumentos.

4. getter/setter

Métodos Getter e setter para aceder a campos privados.

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

De acordo com o Wikipedia:

  1. A classe deve ter um construtor padrão público (sem argumentos). Isso permite uma instanciação fácil dentro de frameworks de edição e ativação.

  2. As propriedades da classe devem ser acessíveis usando get, set, is (Pode ser usado para propriedades booleanas em vez de get), e outros métodos (os chamados métodos de accessor e métodos de mutador) de acordo com uma convenção de nomenclatura padrão. Isto permite uma fácil inspecção e actualização automatizadas de bean state within frameworks, many of which include custom editors for various types of properties. Setters pode ter um ou mais de um argumento.

  3. A aula deve ser serializável. [Isso permite aplicações e frameworks para salvar, armazenar e restaurar o estado do bean de forma independente da VM e da plataforma.]

Para mais informações, siga este link .

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

Java Beans é um padrão, e seus requisitos básicos de sintaxe foram claramente explicados pelas outras respostas.

No entanto, IMO, é mais do que uma simples norma de sintaxe. O real significado ou intenção de uso de Java Beans é, juntamente com vários ferramenta suporta todo o padrão, para facilitar a reutilização de código e de software baseada em componentes de engenharia, i.e. permite aos desenvolvedores criar aplicações de montagem de componentes existentes (classes), e sem ter que escrever qualquer código (ou só tem que escrever um pouco de código de cola). Infelizmente, esta tecnologia está muito subestimada e subutilizada pela indústria, o que pode ser dito a partir das respostas neste tópico.

Se você ler o tutorial do Oracle sobre feijões Java , você pode obter uma melhor compreensão nisso.

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

Em relação à segunda parte da sua pergunta, a serialização é um mecanismo de persistência usado para armazenar objectos como uma sequência de bytes assinados. Coloque menos formalmente, ele armazena o estado de um objeto para que você possa recuperá-lo mais tarde, por Des-serialização.

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

Um Java Bean é uma classe java [conceitual] que deve seguir as seguintes convenções:

    Deve ter um construtor no-arg. Deve ser serializável.
  1. ele deve fornecer métodos para definir e obter os valores das propriedades, conhecidos como métodos getter e setter.
É um componente de software reutilizável. Ele pode encapsular muitos objetos em um único objeto para que o mesmo objeto possa ser acessado a partir de múltiplos lugares e é um passo para fácil manutenção do Código.
 7
Author: Raghav salotra, 2016-12-06 08:29:04

Eles são serializáveis, têm um construtor de argumentos zero, e permitem o acesso a propriedades usando métodos getter e setter. O nome "Bean" foi dado para abranger este padrão, que visa criar componentes de software reutilizáveis para Java.according to wiki

Os objectos que formam a espinha dorsal da sua aplicação e que são geridos pelo contentor de Coi de primavera são chamados feijões. Um feijão é um objeto que é instanciado, montado, e de outra forma gerido por um Coi de Primavera. recipiente. Caso contrário, um feijão é simplesmente um dos muitos objetos em sua aplicação. according to spring io .

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

Java Beans são apenas classes Java normais que seguem certas convenções-você não precisa de ferramentas especiais para criá-las.

Existem duas convenções primárias que devem ser seguidas na criação de classes de feijão Java:

  • cada "Propriedade "da classe Java Bean é implementada definindo duas funções públicas (uma função" get "e uma função" set")
  • as "Operações " da classe Java Bean são as outras funções públicas definidas em classe.
 6
Author: Pankaj Mandale, 2017-04-16 09:10:56

Para entender JavaBean você precisa notar as seguintes coisas: JavaBean é uma coisa conceitual e não pode representar uma classe de coisas específicas

JavaBean é uma ferramenta de desenvolvimento que pode ser visualizada na operação de componentes de software reutilizáveis

JavaBean é baseado na especificação Sun JavaBeans e pode ser componentes reutilizáveis. A sua maior característica é a reutilização.

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

Um feijão Java é essencialmente uma classe, o que classifica uma classe como um feijão é: 1. Ele deve implementar interface serializável (uma interface de marcador). 2. O construtor deve ser público e não ter argumentos (O que outras pessoas chamam de construtor no-arg). 3. Devia ter getter e setters.

É bom notar que o campo serialVersionUID é importante para manter o estado do objecto. Abaixo do código pode ser considerado um feijão:

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