Что такое JavaBean? - PullRequest
       51

Что такое JavaBean?

1593 голосов
/ 21 июля 2010

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

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

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

Кроме того, что означает интерфейс Serializable?

Ответы [ 15 ]

7 голосов
/ 21 июля 2010

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

6 голосов
/ 06 марта 2016

Они сериализуемы, имеют конструктор с нулевым аргументом и разрешают доступ к свойствам с использованием методов получения и установки.Название «Bean» было дано, чтобы охватить этот стандарт, целью которого является создание программных компонентов многократного использования для Java.Управляемые контейнером Spring IoC называются bean-компонентами.Бин - это объект, который создается, собирается и иным образом управляется контейнером Spring IoC.В противном случае бин - это просто один из множества объектов в вашем приложении.according to пружина IO .

3 голосов
/ 05 октября 2018

Java Bean - это, по сути, класс, который классифицирует класс как bean:

  1. Он должен реализовывать сериализуемый интерфейс (интерфейс Marker).
  2. Конструктор должен быть открытым и не иметь аргументов (то, что другие называют его конструктором без аргументов).
  3. Он должен иметь геттер и сеттер.

Приятно отметить, что поле serialVersionUID важно для поддержания состояния объекта. Ниже код квалифицируется как 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;
}}
2 голосов
/ 12 апреля 2019

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

Они были изобретены на ранних этапах Java как часть создания графических интерфейсов. Они следовали шаблонам, которые легко разбирались инструментами, позволяя им создать панель свойств, чтобы вы могли редактировать атрибуты Бина. В общем, свойства Bean представляют элемент управления на экране (Think x, y, width, height, text, ..)

Вы также можете думать об этом как о строго типизированной структуре данных.

Со временем они стали полезны для многих инструментов, которые использовали один и тот же тип доступа (например, Hibernate для сохранения структур данных в базе данных)

По мере развития инструментов они все больше переходили к аннотациям и не разбирали имена сеттеров и геттеров. Теперь большинству систем не нужны bean-компоненты, они могут использовать любой простой старый java-объект с аннотированными свойствами, чтобы сообщить им, как ими манипулировать.

Теперь я вижу бины как аннотированные шары свойств - они действительно полезны только для аннотаций, которые они несут.

Сами бобы не являются здоровым образцом. Они разрушают инкапсуляцию по своей природе, так как они подвергают все свои свойства внешним манипуляциям, и по мере их использования существует тенденция (ни в коем случае не требование) создавать код для манипулирования бином извне вместо создания кода внутри бина (нарушает «дон» не спрашивайте объект о его значениях, попросите объект сделать что-то для вас "). Использование аннотированных pojos с минимальным числом получателей и без установщиков - это намного больше, чем ОО, восстанавливающее инкапсуляцию и возможность неизменности.

Кстати, когда все это происходило, кто-то расширил концепцию до чего-то под названием Enterprise Java Beans. Это ... разные. и они достаточно сложны, чтобы многие люди чувствовали, что они не поняли всей концепции Бина, и перестали использовать этот термин. Я думаю, именно поэтому вы обычно слышите bean-компоненты, называемые POJO (поскольку каждый java-объект является POJO, это технически нормально, но когда вы слышите, как кто-то говорит POJO, они чаще всего думают о чем-то, что следует биновому шаблону)

2 голосов
/ 19 июля 2013

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

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

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

...