Можно ли сделать что-то подобное и каков результат, если
пользователь вошел в систему и мы внесли изменения?
Если я правильно понял, вы хотите изменить почтовый порт во время выполнения? если так:
конечно, это возможно, но изменение значения только в файле свойств не приведет к реальным изменениям в вашей системе, вы должны знать, что вы несете ответственность за управление восстановлением нового экземпляра отправителя почты, в котором вы также следует учитывать такие вопросы, как многопоточность, состояние гонки и т. д.
Я предлагаю вам использовать application.properties
при запуске системы для инициализации вашего экземпляра, а в случае изменения использовать что-то вроде этого:
Принимая во внимание Изменение конфигурации почты во время выполнения и шаблон синглтона, вы должны, вероятно, достичь своей цели:
@Component
public class MailSender{
@Value("${spring.mail.host}")
public static String host;
@Value("${spring.mail.port}")
private static Integer port
private static JavaMailSender instance;
public static synchronized JavaMailSender getInstance(Integer port) {
if (instance == null || port!= null) {
MailSender.port = port!=null ? port: MailSender.port;
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(MailSender.host);
mailSender.setPort(MailSender.port);
return instance;
}
}
Приведенный выше код представляет собой изменение шаблона синглтона, в котором мы проверяем, является ли экземпляр почты нулевым, или порт имеет новое значение, воссоздайте экземпляр, в противном случае, если экземпляр уже имеет значение, используйте его, таким образом вы можете изменить время выполнения порта.
обратите внимание, что с помощью приведенного выше кода я пытаюсь дать вам некоторое представление о проблеме, и вы можете изменить ее в зависимости от вашего дизайна.
Надеюсь, я правильно понял вашу цель.