Действительно ли необходимо, чтобы Боб Java реализовал Serializable
интерфейс?
Это одна из «типичных» функций, описанных в спецификации Javabeans .
Вот отрывок из главы 2.1 Что такое bean?
Отдельные Java Bean-компоненты будут различаться по функциональности, которую они поддерживают, но типичные объединяющие функции которые отличает Java Bean:
- Поддержка «самоанализа», чтобы инструмент построения мог анализировать, как работает bean-компонент
- Поддержка «настройки», чтобы при использовании компоновщика приложений пользователь мог настроить внешний вид и поведение фасоли.
- Поддержка «событий» как простой коммуникационной метафоры, которую можно использовать для подключения фасоль.
- Поддержка «свойств» как для настройки, так и для программного использования.
- Поддержка сохраняемости, чтобы компонент можно было настроить в построителе приложений и затем сохраните его настроенное состояние и перезагрузите позже.
А вот отрывок из главы 5.5 Краткое изложение устойчивости :
Все bean-компоненты должны поддерживать сериализацию или экстернализацию.
На практике для его работы не обязательно. В общем, он также будет нормально работать без реализации Serializable
. Однако это полезно всякий раз, когда вы хотите хранить их «в обычном» виде на жестком диске или отправлять «в обычном формате» по сети.Например, когда это bean-компонент с областью сеанса, который должен храниться в сеансе HTTP, и сервер настроен на сохранение и возобновление сеансов HTTP во время выключения / перезапуска. В любом случае, всякий раз, когда вы сталкиваетесь с NotSerializableException
с полным квалифицированным именем класса в сообщении, тогда достаточно знака, чтобы позволить ему реализовать Serializable
.
Да .
По определению - Java bean - это именно то, что сериализуемый POJO (простой старый объект Java), с конструктором без аргументов и частными полями с геттерами / сеттерами.