Я только нахожусь в процессе разработки нового программного компонента, включающего Spring Framework. Мне это нравится, но теперь у меня есть вопрос относительно IoC и сериализации.
Учитывая, что у меня есть этот класс (Пропущенный импорт и объявление пакета):
public class EMailNotificationEndpoint implements NotificationEndpoint {
private List<String> notficationEmailAdresses = new ArrayList<String>();
transient private MailSender mailSender;
public EMailNotificationEndpoint(MailSender mailSender) {
this.mailSender = mailSender;
}
@Override
public void notify(Notification notification) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(notficationEmailAdresses.toArray(new String[notficationEmailAdresses.size()]));
simpleMailMessage.setSubject(notification.getType().toString());
simpleMailMessage.setText(notification.getMessage());
mailSender.send(simpleMailMessage);
}
}
NotificationEndpoint расширяет Serializable, чтобы обеспечить сериализацию всех реализаций. Дело в том, что я не могу сериализовать MailSender (который является org.springframework.mail.MailSender BTW) и хочу, чтобы он вводился во время десериализации. Теперь мой вопрос совершенно очевиден: могу ли я это сделать? И если ответ - да, то как?
Я свободен изменять интерфейс и реализации, так что должен быть способ сделать это, даже если это означает, что я должен реорганизовать соответствующие классы.
Любая идея или подсказка высоко ценится!