2015-03-21 2 views
1

Почему классы классов bean должны быть сериализованы?Почему класс bean должен быть сериализован

Я видел классы бобов в сообщениях о весне MVC, и они всегда объявляются сериализованными и имеют private static final long serialVersionUID. Зачем?

+0

Я отредактировал ваше сообщение для грамматики, но, поскольку я не мог полностью понять это, пожалуйста, проверьте, что цель публикации, как я ее отредактировал, по-прежнему совпадает с вашим первоначальным намерением. – hexafraction

+1

Ваше предположение просто неверно, поэтому вопрос невозможен. –

+0

Спасибо Hexafraction для коррекции – JDevil

ответ

2

Одна из веских причин в отношении сервлетов заключается в том, что если вы помещаете сериализуемые бобы в сеанс веб-сервера, ваш веб-сервер может сериализовать их на диск, если он выключится, а затем десериализовать их обратно в память при запуске , Таким образом, пользователи не потеряют свои сеансы/логины при возврате сервера.

Если в сеансе есть какие-либо несериализуемые компоненты, tomcat не сможет сериализовать сеансы на диск.

Я считаю, что это также необходимо, если вы хотите синхронизировать сеансы между несколькими серверами в кластере.

2

Согласно JavaBean specification фасоль должна быть сериализована. На самом деле любой класс Java может быть бобом, если она обладает следующими свойствами:

  1. имеет конструктор без аргументов
  2. имеют некоторые частные член и доступ/манипулировать ими имеют некоторый геттер/сеттер
  3. Реализует serializable

См. Определение бобов wikipedia. По определению они сериализуемы.

И serialVersionUID используется как универсальный идентификатор версии для класса Serializable. После того, как класс будет сериализован при начале процесса десериализации, это число используется для обеспечения того, чтобы загруженный класс соответствовал точно сериализованному объекту.

+1

Вопрос не был * почему * являются фасолью сериализованной? Этот ответ просто указывает на очевидность: бобы сериализуются. Не дает причины, почему –

+0

Но почему бит должен быть сериализован – JDevil

+0

Это не отвечает на вопрос. –

Смежные вопросы