Изменить application.properties со страницы HTML - PullRequest
0 голосов
/ 01 сентября 2018

Я работаю с Spring, и в моем application.properties есть информация, которую я хочу обновить со страницы HTML

Myapplication.properties

...
spring.mail.host=smtp.gmail.com
spring.mail.port=587
...

Допустим, нам нужно изменить порт.

Можно ли сделать что-то подобное и каков результат, если пользователь вошел в систему, а мы внесли изменения?

Я также читал этот пост Обновление свойства в среде Spring в коде Java это правильное решение.

Полагаю, если я скажу, что нам нужно перестроить appplication.properties после изменения некоторой информации.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Прежде всего, после изменения конфигурации вы должны перезагрузить бины в зависимости от измененных переменных.

Я бы порекомендовал вам взглянуть на Spring Cloud Config проект.

Имеет следующие функции:

  • Хранит конфиги (и изменения) в Git
  • Может изменять свойства конфигурации во время выполнения и заставлять подписанные приложения автоматически перезагружать свой контекст (или даже только зависимые компоненты)

Несмотря на то, что это не прямой ответ на ваш вопрос (у него нет пользовательского интерфейса для настройки), но это хорошая причина для поиска пользовательского интерфейса для Spring Cloud Config .

0 голосов
/ 01 сентября 2018

Можно ли сделать что-то подобное и каков результат, если пользователь вошел в систему и мы внесли изменения?

Если я правильно понял, вы хотите изменить почтовый порт во время выполнения? если так:

конечно, это возможно, но изменение значения только в файле свойств не приведет к реальным изменениям в вашей системе, вы должны знать, что вы несете ответственность за управление восстановлением нового экземпляра отправителя почты, в котором вы также следует учитывать такие вопросы, как многопоточность, состояние гонки и т. д.

Я предлагаю вам использовать 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;
  }

}

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

Надеюсь, я правильно понял вашу цель.

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