java - 如何在 application.conf 上引用 .properties 值

标签 java akka akka-remote-actor

我有一个使用自定义角色系统的 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);
    
  2. 您可以通过代码加载自定义配置文件而不是 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"
    
  3. 如果未定义,您还可以通过系统属性提供自定义端口和 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. 或者您可以在 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/

相关文章:

java - 从 Selenium 的隐藏下拉菜单中选择一个选项

akka - 使用 Akka FSM 进行进入操作

java - Akka远程路由主机名配置问题

scala - 如何使用 Akka 远程处理通过 CLI 向远程参与者发送消息?

apache-spark - Apache Spark 错误的 akka-remote netty 版本

java - 为 Fragment 中的更多 editTexts 设置 OnFocusChangeListener

Java:将小程序转换为桌面应用程序

java - 在不应该的时候返回零

scala - Akka Streams 的 ActorPublisher 作为 Web 响应的源 - 背压如何工作

scala - 在 Scala 中,为什么没有 `Future.onComplete` 的实现?