Вопрос: Что такое JavaBean?


Я понял, что «Bean» - это класс Java со свойствами и getters / seters. Насколько я понимаю, это эквивалент структуры C. Это правда?

Кроме того, существует реальная синтаксический разница между компонентом и обычным классом? Есть ли специальное определение или интерфейс?

В принципе, почему существует термин для этого?

редактировать : Если вы можете быть таким добрым и добавить информацию о Serializableинтерфейс, и что это означает, к вашему ответу, я был бы очень благодарен.


1331


источник


Ответы:


JavaBean - это просто стандарт

  1. Все частные объекты (используйте геттеры / сеттеры )
  2. Общественный конструктор без аргументов
  3. инвентарь Serializable,

Вот и все. Это просто конвенция. От этого зависит множество библиотек.

Что касается Serializable, из Документация API :

Сериализуемость класса обеспечивается классом, реализующим   java.io.Serializable интерфейс. Классы, которые не реализуют этот   интерфейс не будет иметь своего состояния, сериализованного или десериализованного.   Все подтипы сериализуемого класса сами сериализуемы.   интерфейс сериализации не имеет методов или полей и служит только для   идентифицировать семантику сериализации.

Другими словами, сериализуемые объекты могут быть записаны в потоки и, следовательно, файлы, базы данных объектов, что-либо действительно.

Кроме того, нет никакой синтаксической разницы между JavaBean и другим классом - класс определяет JavaBean, если он соответствует стандартам.

Существует термин для него, потому что стандарт позволяет библиотекам программно делать что-либо с экземплярами класса, которые вы определяете предопределенным образом. Например, если библиотека хочет передать любой объект, который вы передаете в нее, она знает, что это возможно, потому что ваш объект сериализуем (если lib требует, чтобы ваши объекты были надлежащими JavaBeans).


1449



У него есть термин, чтобы сделать его особенным. Реальность нигде не столь таинственна.

В принципе, «Бин»:

  • является сериализуемым объектом (т. е. он реализует java.io.Serializable, и делает это правильно), что
  • имеет «свойства», чьи геттеры и сеттеры - это просто методы с определенными именами (например, getFoo()является получателем для свойства «Foo») и
  • имеет общедоступный конструктор по умолчанию (поэтому он может быть создан по желанию и настроен путем установки его свойств).

Обновить:

Что касается Serializable: Это не что иное, как «интерфейс маркера» (интерфейс, который не объявляет какие-либо функции), который сообщает Java, что реализующий класс соглашается (и подразумевает, что он способен) «сериализация» - процесс, который преобразует экземпляр в поток байтов. Эти байты могут храниться в файлах, отправляться по сетевому соединению и т. Д., И иметь достаточно информации, чтобы позволить JVM (по крайней мере, тот, кто знает о типе объекта), чтобы позже восстановить объект - возможно, в другом экземпляре приложения или даже на целом другом компьютере!

Конечно, для этого класс должен соблюдать определенные ограничения. Главным из них является то, что все поля экземпляра должны быть либо примитивными типами (int, bool, и т. Д.), Экземплярами какого-либо класса, который также сериализуем, либо помечен как transientтак что Java не будет пытаться их включить. (Это, конечно, означает, что transientполя не переживут путешествие по потоку. Класс, который имеет transientполя должны быть готовы к их повторной инициализации, если это необходимо.)

Класс, который не может соблюдать эти ограничения, не должен реализовывать Serializable(и, IIRC, компилятор Java даже не будет позволять он делает это.)


236



JavaBeans - это Java-классы, которые придерживаются чрезвычайно простого соглашения о кодировании. Все, что вам нужно сделать, это

  1. Внедрение интерфейса java.io.Serializable - сохранение состояния объект
  2. использовать открытый пустой конструктор аргументов - для создания объекта
  3. И предоставлять общедоступные методы getter и setter. Получить и установить значения частных переменных (свойств).

79



Свойства JavaBeans

JavaBean - это объект Java, который удовлетворяет определенным соглашениям о программировании:

  1. Класс JavaBean должен реализовать либо Serializableили Externalizable

  2. Класс JavaBean должен иметь конструктор no-arg

  3. Все свойства JavaBean должны иметь общедоступный метод setter и getter

  4. Все переменные экземпляра JavaBean должны быть приватными

Пример 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;
   }
}

44



Java-бобы используют для меньшего количества кода и более рабочего подхода ... Java-бобы используются в Java EE как универсальный контракт для обнаружения и доступа во время выполнения. Например, JavaServer Pages (JSP) использует Java Beans в качестве объектов передачи данных между страницами или между сервлетами и JSP. Java EE's JavaBeans Activation Framework использует Java Beans для интеграции поддержки типов данных MIME в Java EE. API управления Java EE использует JavaBeans в качестве основы для инструментария управления ресурсами в среде Java EE.

О сериализации:

В сериализации объектов объект может быть представлен как последовательность байтов, которая включает в себя данные объекта, а также информацию о типе объекта и типах данных, хранящихся в объекте.

После того, как сериализованный объект был записан в файл, он может быть прочитан из файла и десериализован, то есть информация о типе и байты, которые представляют объект и его данные, могут использоваться для воссоздания объекта в памяти.


18



You will find Serialization useful when deploying your project across multiple servers since beans will be persisted and transferred across them.


17



Explanation with an example.

1. import java.io.Serializable

As for the Serialization, see the documentation.

2. private fields

Fields should be private for prevent outer classes to easily modify those fields. Instead of directly accesing to those fields, usuagly getter/setter methods are used.

3. Constructor

A public constructor without any argument.

4. getter/setter

Getter and setter methods for accesing private fields.

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



As per the Wikipedia:

  1. The class must have a public default constructor (with no arguments). This allows easy instantiation within editing and activation frameworks.

  2. The class properties must be accessible using get, set, is (can be used for boolean properties instead of get), and other methods (so-called accessor methods and mutator methods) according to a standard naming convention. This allows easy automated inspection and updating of bean state within frameworks, many of which include custom editors for various types of properties. Setters can have one or more than one argument.

  3. The class should be serializable. [This allows applications and frameworks to reliably save, store, and restore the bean's state in a manner independent of the VM and of the platform.]

For more information follow this link.


9



Regarding the second part of your question, Serialization is a persistence mechanism used to store objects as a sequence of signed bytes. Put less formally, it stores the state of an object so you can retrieve it later, by de-serialization.


7



Java Beans is a standard, and its basic syntax requirements have been clearly explained by the other answers.

However, IMO, it is more than a simple syntax standard. The real meaning or intended usage of Java Beans is, together with various tool supports around the standard, to facilitate code reuse and component-based software engineering, i.e. enable developers to build applications by assembling existing components (classes) and without having to write any code (or only have to write a little glue code). Unfortunately this technology is way under-estimated and under-utilized by the industry, which can be told from the answers in this thread.

If you read Oracle's tutorial on Java Beans, you can get a better understanding in that.


7



A Java Bean is a java class [conceptual] that should follow following conventions:

  1. It should have a no-arg constructor.
  2. It should be Serializable.
  3. It should provide methods to set and get the values of the properties, known as getter and setter methods.

It is a reusable software component. It can encapsulate many object into one object so that same object can be accessed from multiples places and is a step towards easy maintenance of code.


7



They are serializable, have a zero-argument constructor, and allow access to properties using getter and setter methods. The name "Bean" was given to encompass this standard, which aims to create reusable software components for Java.according to wiki

The objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. Otherwise, a bean is simply one of many objects in your application. according to spring io.


6