Как ссылаться на значение.properties на application.conf
У меня есть приложение J2EE, в котором используется пользовательская система акторов, и мне нужно вывести некоторые пользовательские конфигурации.
Есть ли способ сделать это? Так как application.conf
всегда на пути к классам там в любом случае я могу загрузить внешний custom.properties
файл и использовать его, как показано ниже
ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"
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);
Вы можете загрузить свой файл конфигурации вместо
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"
Вы также можете указать 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}"
Или вы можете включить
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"