Что такое JavaBean и каковы его соглашения?

«Что такое JavaBean и каковы его соглашения?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JavaBean — это стандартный, повторно используемый Java-компонент, который следует строгим соглашениям о проектировании. Эти соглашения позволяют инструментам (билдерам GUI, фреймворкам) интроспектировать, манипулировать и сериализовать объекты.

Обязательные соглашения:

  1. Публичный конструктор без аргументов.
  2. Свойства (properties) доступны через методы доступа: геттер (getX/isX для boolean) и сеттер (setX).
  3. Класс должен быть сериализуемым (реализовывать java.io.Serializable), что часто требуется для долговременного хранения или передачи по сети.

Пример класса JavaBean:

import java.io.Serializable;

public class UserBean implements Serializable {
    private String name;
    private int age;
    private boolean active;

    // 1. Публичный конструктор без аргументов
    public UserBean() {}

    // 2. Геттеры и сеттеры для свойств
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }

    public boolean isActive() { return active; } // Геттер для boolean
    public void setActive(boolean active) { this.active = active; }
}

Где используется?

  • Фреймворки: Spring (для инъекции зависимостей), Jakarta EE (JSF, CDI).
  • ORM: Hibernate/JPA (сущности часто следуют этим соглашениям).
  • Событийная модель и инструменты визуальной разработки.

Важно: Не путать JavaBeans с обычными POJO. Все JavaBeans — это POJO, но не все POJO являются JavaBeans, так как POJO не обязаны следовать этим строгим соглашениям.