代码之家  ›  专栏  ›  技术社区  ›  Yagami Light

改变应用程序属性从HTML页面

  •  0
  • Yagami Light  · 技术社区  · 6 年前

    application.properties 我想从HTML页面更新的

    Myapplication.properties属性

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

    假设我们需要换个港口。

    我也读过这篇文章 Update property in spring environment in java code 这是正确的解决方案吗。

    我想如果我说我们需要重建 appplication.properties

    2 回复  |  直到 6 年前
        1
  •  1
  •   MohammadReza Alagheband    6 年前

    有可能这样做吗?如果 用户已登录,我们进行了更改?

    如果我理解正确的话,您想在运行时更改邮件端口吗?如果是:

    当然这是可能的,但是仅仅更改属性文件中的值不会导致系统中的实际更改,您应该知道,管理新邮件发送者实例的重建是您的责任,在该实例中,您还应该考虑多线程、竞争条件等问题

    application.properties Changing mail configuration in runtime

    @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;
      }
    

    }

    上面的代码是对singleton模式的一种修改,在这种模式中,我们检查mail实例是否为null或者port是否有新的值。否则,如果实例已经有值,则重新创建实例,这样您就可以更改port运行时。

    我希望我没弄错你的目的。

        2
  •  0
  •   Max Farsikov    6 年前

    我建议你去看看

    它具有以下特点:

    • 在Git中存储配置(和更改)
    • 可以在运行时更改配置属性,并强制订阅的应用程序自动重新加载其上下文(甚至仅依赖于bean)

    尽管它不能直接回答您的问题(它没有用于配置的UI),但它是搜索的一个很好的理由 Spring云配置的UI 相反。