我有一个使用自定义角色系统的 J2EE 应用程序,我需要外部化一些自定义配置。
有没有办法做到这一点?因为 application.conf
总是在类路径上,无论如何我可以加载外部 custom.properties
文件并像下面那样使用它
ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"
最佳答案
我不完全确定你的限制是什么,但原则上你有几个选择:
您可以在创建角色系统时向其提供硬编码配置,如下所示:
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
并在您的custom.conf
中包含application.conf
,如下所示:include "application" akka.remote.netty.hostname = "custom-ip" akka.remote.netty.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}"
或者您可以在
application.conf
文件中包含custom.properties
。如果custom.properties
不存在,将被忽略。application.conf
:akka.remote.netty.hostname = "default-ip" akka.remote.netty.port = "default-port" include "custom"
自定义属性
:akka.remote.netty.hostname = "custom-ip" akka.remote.netty.port = "custom-port"
关于java - 如何在 application.conf 上引用 .properties 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490118/