Как ссылаться на значение.properties на application.conf

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

Есть ли способ сделать это? Так как application.conf всегда на пути к классам там в любом случае я могу загрузить внешний custom.properties файл и использовать его, как показано ниже

ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"

1 ответ

Решение

Я не совсем уверен, каковы ваши ограничения, но в принципе у вас есть несколько вариантов:

  1. Вы можете предоставить жестко запрограммированную конфигурацию вашей актерской системе, когда создаете ее, например:

    Map configMap = new HashMap();
    configMap.put("akka.remote.netty.hostname", custom.ip);
    configMap.put("akka.remote.netty.port", custom.port);
    
    Config config = ConfigFactory.parseMap(configMap).withFallback(ConfigFactory.load());
    ActorSystem system = ActorSystem.create("ActorSystem", config);
    
  2. Вы можете загрузить свой файл конфигурации вместо application.conf либо через код: ConfigFactory.load("custom.conf") или установив системное свойство -Dconfig.resource=custom.conf и включать application.conf в вашем custom.conf, как это:

    include "application"
    akka.remote.netty.hostname = "custom-ip"
    akka.remote.netty.port = "custom-port"
    
  3. Вы также можете указать custom-port и ip через системные свойства и использовать значения по умолчанию, если они не определены. В этом случае application.conf будет выглядеть так:

    akka.remote.netty.hostname = "default-ip"
    akka.remote.netty.port = "default-port"
    akka.remote.netty.hostname = "${?custom.ip}"
    akka.remote.netty.port = "${?custom.port}"
    
  4. Или вы можете включить custom.properties в вашем application.conf файл. Если custom.properties не существует, если будет тихо игнорироваться. application.conf:

    akka.remote.netty.hostname = "default-ip"
    akka.remote.netty.port = "default-port"
    include "custom"
    

    custom.properties:

    akka.remote.netty.hostname = "custom-ip"
    akka.remote.netty.port = "custom-port"
    
Другие вопросы по тегам