Что такое JavaBean точно?



Я понял, я думаю, что" Боб " - это класс Java со свойствами и геттерами/сеттерами. Насколько я понимаю, это эквивалент C-структуры. Это правда?



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



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



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

757   15  

15 ответов:

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

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

вот именно. Это просто условность. Однако от этого зависит множество библиотек.

С уважением Serializable с документация API:

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

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

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

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

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

в основном, "Боб":

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

обновление:

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

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

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

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

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

свойства 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;
   }
}

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

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

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

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

сериализация будет полезна при развертывании проекта на нескольких серверах, так как бобы будут сохраняться и передаваться через них.

объяснение с примером.

1. импорт java. io. Serializable

Что касается сериализации, см. документация.

2. частные поля

поля должны быть частными для предотвращения внешних классов легко изменять эти поля. Вместо прямого доступа к этим полям обычно используются методы getter/setter.

3. Конструктор

общественный конструктор без каких-либо аргументов.

4. геттер/сеттер

методы Getter и setter для доступа к частным полям.

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

согласно Википедии:

  1. класс должен иметь открытый конструктор по умолчанию (без аргументов). Это позволяет легко создавать экземпляры в рамках редактирования и активации.

  2. свойства класса должны быть доступны с помощью get, set, is (может использоваться для булевых свойств вместо get) и других методов (так называемые методы доступа и методы мутатора) в соответствии со стандартным соглашением об именах. Это позволяет легко автоматизировать проверка и обновление состояния компонента в рамках фреймворков, многие из которых включают пользовательские редакторы для различных типов свойств. Сеттеры могут иметь один или несколько аргументов.

  3. класс должен быть сериализуемым. [Это позволяет приложениям и фреймворкам надежно сохранять, хранить и восстанавливать состояние компонента независимо от виртуальной машины и платформы.]

для получения дополнительной информации следуйте этому ссылка.

Java Beans является стандартом, и его основные требования к синтаксису были четко объяснены другими ответами.

однако, ИМО, это больше, чем простой стандарт синтаксиса. Реальное значение или предполагаемое использование Java Beans, вместе с различными инструментальными опорами вокруг стандарта, облегчают повторное использование кода и компонентную разработку программного обеспечения, т. е. позволяют разработчикам создавать приложения путем сборки существующих компонентов (классов) и без необходимости писать какой-либо код (или только нужно написать немного кода клея). К сожалению, эта технология недооценена и недостаточно используется в промышленности, что можно сказать из ответов в этой теме.

Если Вы читаете Оракула учебник по Java Beans, вы можете получить лучшее понимание в этом.

Что касается второй части вашего вопроса, сериализация-это механизм сохранения используется для хранения объектов в виде последовательности байтов подпись. Говоря менее формально, он сохраняет состояние объекта, чтобы вы могли получить его позже, путем де-сериализации.

Java Bean-это класс java [концептуальный], который должен следовать следующим соглашениям:

  1. он должен иметь конструктор no-arg.
  2. Он должен быть Сериализуемым.
  3. Он должен предоставлять методы для установки и получения значений свойств, известных как методы getter и setter.

Это компонент повторного использования программного обеспечения. Он может инкапсулировать много объектов в один объект, так что один и тот же объект может быть доступен из нескольких мест и является шаг к простому обслуживанию кода.

они сериализуемы, имеют конструктор с нулевым аргументом и разрешают доступ к свойствам с помощью методов getter и setter. Название "Bean" было дано, чтобы охватить этот стандарт, который направлен на создание многоразовых программных компонентов для Java.according to wiki

объекты, которые образуют основу вашего приложения и управляются контейнером Spring IoC, называются beans. Боб-это объект, который создается, собирается и управляется другим объектом Весенний контейнер МОК. В противном случае боб-это просто один из многих объектов в вашем приложении. according toвесна io.

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

существует два основных соглашения, которые необходимо соблюдать при создании классов Java Bean:

  • каждый "свойства "класса Java Bean реализуется путем определения двух публичных функций (функция" get "и функция" set")
  • "операции " из класса Java Bean являются другие публичные функции, определенные в классе.

чтобы понять JavaBean-компонента, нужно обращать внимание на следующее: JavaBean-это концептуальный материал и не может представлять собой класс конкретных вещей

JavaBean-это инструмент разработки, который можно визуализировать в работе многоразовых программных компонентов

JavaBean является основанный на спецификации JavaBeans и Солнце может быть повторно используемых компонентов. Его самой большой особенностью является повторное использование.

Java Bean-это, по сути, класс, который классифицирует класс как Боб: 1. Он должен реализовать сериализуемый интерфейс (интерфейс маркера). 2. Конструктор должен быть общедоступным и не иметь аргументов (то, что другие люди называют конструктором no-arg). 3. Он должен иметь геттер и сеттер.

хорошо отметить, что поле serialVersionUID важно для поддержания состояния объекта. Ниже код квалифицируется как Боб:

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

Comments

    Ничего не найдено.