Почему Java Beans должен быть сериализуемым? - PullRequest
13 голосов
/ 29 июня 2010

Обязательно ли, чтобы Java Bean реализовывал интерфейс Serializable?

Ответы [ 2 ]

13 голосов
/ 29 июня 2010

Да .

По определению - Java-бин это именно то, что сериализуемый POJO (простой старый объект Java), с конструктором без аргументов и закрытыми полями с геттерами / сеттерами.

12 голосов
/ 29 июня 2010

Это одна из «типичных» функций, описанных в спецификации Javabeans .

Вот выдержка из главы 2.1 Что такое боб?

Отдельные Java Bean-компоненты будут различаться по функциональности, которую они поддерживают, но по типичным объединяющим функциям. которые отличают Java Bean:

  • Поддержка «самоанализа», чтобы инструмент строителя мог анализировать, как работает бин
  • Поддержка «настройки», так что при использовании конструктора приложений пользователь может настроить внешний вид и поведение бобов.
  • Поддержка «событий» как простой метафоры общения, которую можно использовать для подключения вверх бобы.
  • Поддержка «свойств», как для настройки, так и для программного использования.
  • Поддержка персистентности, так что компонент может быть настроен в конструкторе приложений и затем сохраните настроенное состояние и перезагрузите его позже.

А вот выдержка из главы 5.5 Сводка по постоянству :

Все компоненты должны поддерживать сериализацию или экстернализацию.

На практике для его работы нет необходимости. В целом, он также будет работать нормально без реализации Serializable. Тем не менее, это полезно, когда вы хотите сохранить их «обычными» на жестком диске или отправить «обычные» по сети. Например, когда это bean-объект сессионной области, который должен быть сохранен в сеансе HTTP, а сервер сконфигурирован для сохранения и восстановления сеансов HTTP во время выключения / перезапуска. В любом случае, когда вы сталкиваетесь с NotSerializableException с полным квалифицированным именем класса в сообщении, этого достаточно для того, чтобы он реализовал Serializable.

...