Модификация уже существующих бобов - PullRequest
0 голосов
/ 06 августа 2020

У меня есть приложение, написанное на Java (8) + spring boot и интерфейс на angular. В приложении предусмотрена автоматическая c отправка электронных писем (@Scheduler), и у пользователя есть возможность изменить настройки электронной почты, например, пароль для входа в электронную почту или на сервер, и именно здесь начинается проблема. Настройки хранятся в базе данных и в приложении как @Bean - SettingsBean . Как я могу обновить содержимое уже введенного bean-компонента в другой экземпляр, например, SettingsBean вводится в JavaMailSender при запуске с настройками по умолчанию, поэтому после смены пользователя @ bean настройка изменяется, но значения в JavaMailSender - нет. Как решить?

1 Ответ

0 голосов
/ 07 августа 2020

Два решения не уверены, что подойдет лучше, но:

  1. Создать оболочку и воссоздать JavaMailSender

Я бы не стал создавать JavaMailSender как bean-компонент, но я бы инициировать его в каком-нибудь MailJMSWrapper с помощью @autowired SettingsBean. Затем я бы создал JavaMailSender вручную и скопировал данные settingsBean и сравнил с данными при выполнении. Если другое, создайте новый JavaMailSender. Если старый, используйте старый экземпляр.

Use Events + Wrapper

Второй подход будет с событиями для отправки события в Wrapper всякий раз, когда SettingsBean был изменен для инициирования нового JavaMailSender.

...