Нужно ли, чтобы Java Bean реализовал интерфейс Serializable
?
Почему Java Beans должен быть сериализуемым?
Ответ 1
Это одна из "типичных" функций, описанных в спецификации Javabeans.
Здесь выдержка из главы 2.1 Что такое bean?
Индивидуальная Java Beans будет отличаться в функциональности, которую они поддерживают, но типичные объединяющие функции которые отличают Java Bean:
- Поддержка "интроспекции", чтобы инструмент строителя мог анализировать, как работает Bean
- Поддержка "настройки", так что при использовании построителя приложений пользователь может настроить внешний вид и поведение bean.
- Поддержка "событий" как простой метафоры связи, чем может использоваться для подключения up beans.
- Поддержка "свойств", как для настройки, так и для использования в программах.
- Поддержка сохранения, так что Bean можно настроить в построителе приложений и затем настройте свое настроенное состояние и перезагрузите его позже.
И вот выдержка из главы 5.5 Резюме стойкости:
Все Beans должны поддерживать либо сериализацию, либо эквализацию.
На практике это явно не необходимо для его функционирования. В целом он просто отлично работает без реализации Serializable
. Это, однако, полезно, когда вы хотите сохранить их "обычным" на жестком диске или отправить "обычную" по сети. Например, когда это сеанс с областью Bean, который должен быть сохранен в сеансе HTTP, и сервер был запутан, чтобы продолжать и возобновлять сеансы HTTP во время выключения/перезапуска. Во всяком случае, всякий раз, когда вы сталкиваетесь с NotSerializableException
с полным именем класса Bean в сообщении, тогда достаточно знака, чтобы он реализовал Serializable
.
Ответ 2
Да.
По определению - Java bean - это то, что является сериализуемым POJO (простым старым Java-объектом), с конструктором без аргументов и частными полями с getters/seters.