Spring: сериализация объектов со ссылками на несериализуемые компоненты - PullRequest
3 голосов
/ 19 октября 2010

Класс ниже (моя реализация UserDetailsService) привязывается к сеансу, а сеанс сериализуется (в движке приложений Google).

Недавно я смотрел презентацию Spring 3, в которой говорилось, что бины, такие как userDao, показанные ниже, загружаются прокси-сервером, который не сериализует бин, но сохраняет только имя и повторно получает ссылку на десериализацию ,

Но с кодом ниже я получаю NotSerializableException: com.prepayproxy.dataaccesslayer.GAEUserDao

@Service("springUserDetailsService")
public class SpringUserDetailsService implements UserDetailsService, Serializable {
    @Resource(name="userDao")
    private IUserDao userDao;
    //...
}

1 Ответ

2 голосов
/ 19 октября 2010

У вас есть 2 варианта:

  1. Отметьте дао как временный, чтобы он не сериализовался.
  2. Сериализуйте Дао самостоятельно.

Java предоставляет средства для сериализации несериализуемых объектов. Вам нужно будет реализовать


 private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException;

Сериализуемый интерфейс включает в себя описание этих методов. Вот ссылка на документацию (Java 1.6) Сериализуемый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...