使用 spray-can 的 REST 服务
REST Services Using spray-can
我有一个正在使用喷雾罐构建的应用程序。这是一个 sbt 项目,我有标准的 sbt 项目结构。我有一个 application.dev.conf、application.test.conf 和 application.prod.conf。我现在想通过将 application.xxx.conf 文件作为参数传递来启动我的喷雾罐服务器。我过去广泛使用过 Play 框架,我可以控制或更确切地说将配置文件传递给 play 运行 命令。我现在如何使用 Spray 做同样的事情?有什么建议吗?
我有以下内容:
val cfg = context.system.settings.config
这是在我的 Spray 演员中获取 application.conf 文件的正确方法吗?
我试过这样做:
sbt "project simple-http-server" run -Dconfig.resource=production.conf
似乎 运行 之后的任何内容都被默默地忽略了。如何针对不同的配置发出 运行 命令?
您可以使用Typesafe's Config Library
只需定义依赖关系:
libraryDependencies += "com.typesafe" % "config" % "1.3.0"
在您的应用中,您使用它来获取配置:
val conf = ConfigFactory.load()
默认情况下,它会在类路径中搜索名为 application.{conf,json,properties}
的文件,但您可以在 运行 您的应用程序时使用 -Dconfig.file
覆盖它。
如果您希望它在 SBT 中运行,您需要启用 forking。 SBT 通常不会分叉新的 JVM 进程,因此您需要启用它并在 build.sbt
:
中指定所需的 JVM 选项
// fork a new JVM for 'run' and 'test:run'
fork in run := true
// set config file to production.conf
javaOptions in run += "-Dconfig.file=production.conf"
或者在命令行动态设置:
sbt '; set javaOptions += "-Dconfig.file=production.conf"; run'
我有一个正在使用喷雾罐构建的应用程序。这是一个 sbt 项目,我有标准的 sbt 项目结构。我有一个 application.dev.conf、application.test.conf 和 application.prod.conf。我现在想通过将 application.xxx.conf 文件作为参数传递来启动我的喷雾罐服务器。我过去广泛使用过 Play 框架,我可以控制或更确切地说将配置文件传递给 play 运行 命令。我现在如何使用 Spray 做同样的事情?有什么建议吗?
我有以下内容:
val cfg = context.system.settings.config
这是在我的 Spray 演员中获取 application.conf 文件的正确方法吗?
我试过这样做:
sbt "project simple-http-server" run -Dconfig.resource=production.conf
似乎 运行 之后的任何内容都被默默地忽略了。如何针对不同的配置发出 运行 命令?
您可以使用Typesafe's Config Library
只需定义依赖关系:
libraryDependencies += "com.typesafe" % "config" % "1.3.0"
在您的应用中,您使用它来获取配置:
val conf = ConfigFactory.load()
默认情况下,它会在类路径中搜索名为 application.{conf,json,properties}
的文件,但您可以在 运行 您的应用程序时使用 -Dconfig.file
覆盖它。
如果您希望它在 SBT 中运行,您需要启用 forking。 SBT 通常不会分叉新的 JVM 进程,因此您需要启用它并在 build.sbt
:
// fork a new JVM for 'run' and 'test:run'
fork in run := true
// set config file to production.conf
javaOptions in run += "-Dconfig.file=production.conf"
或者在命令行动态设置:
sbt '; set javaOptions += "-Dconfig.file=production.conf"; run'