访问游戏! application.conf中的2.0配置变量?

时间:2012-03-25 04:23:10

标签: playframework-2.0

以前在Play! v1在application.conf中定义配置变量非常容易,然后像这样访问它们:

play.configuration("db.driver")

但是现在我在文档中找不到任何类似用途的文件或适当的替代方案。这样做的方法是什么?

14 个答案:

答案 0 :(得分:115)

与此相当的Play 2.0 Scala将是:

Play.current.configuration.getString("db.driver")

您还需要import play.api.Play

完整的文档是here

答案 1 :(得分:57)

适用于Play 2.0 - 在 Java控制器中,您可以使用以下命令:

String optionValue = Play.application().configuration().getString("db.driver");

要获取变量在视图中,请使用此选项:

@play.Play.application().configuration().getString("db.driver")

答案 2 :(得分:34)

自Play 2.5起,play.api.Play.current已弃用。您应该使用依赖注入来注入EnvironmentConfiguration并使用它来读取配置值:

class HomeController @Inject() (configuration: play.api.Configuration) extends Controller {
  def config = Action {
    Ok(configuration.underlying.getString("db.driver"))
  }
}

查看Play documentation以获取更详细的讨论。

答案 3 :(得分:21)

Play 2.3.2 for Java 中,您可以使用com.typesafe.config.ConfigFactory选项:

Config conf = ConfigFactory.load();
String myFooBarConfiguration = conf.getString("foo.bar");

快速移动的API!

答案 4 :(得分:6)

Play 2.3 [.8] / Java 中测试的另一种方法,用于访问application.conf中的值:

要检查Play版本,请检查文件项目/插件。包含“sbt-plugin”的行应该具有类似“2.3.8”的版本规范。

例如,如果application.conf包含行

myConfigStringValue=abc
myConfigBooleanValue=true

可以从像

这样的java文件/类中查询这些值
import play.Configuration;
...
String myString = Configuration.root().getString("myConfigStringValue");
Boolean myBoolean = Configuration.root().getBoolean("myConfigBooleanValue");

如果找不到值,则get ...方法返回null,还有get ...方法将默认值作为参数。

有关详细信息,请参阅 https://www.playframework.com/documentation/2.3.x/api/java/index.html

并检查课程播放。配置。

答案 5 :(得分:5)

在Play Scala 2.3.x和2.4.x中,要从conf/application.conf读取值,您可以执行以下操作:

import play.api.Play.current
...
current.configuration.getString("db.driver")

答案 6 :(得分:4)

在Play 2.0.1 Java中,您需要这样做:

import play.Application.*;
...
String optionValue = play.Play.application().configuration().getString("my.config");

答案 7 :(得分:3)

在Play 2.1中,Scala 首先,你必须import play.api.Play Play.current.configuration.getString("varibale name")

答案 8 :(得分:2)

如果您使用的是 Play Scala ,我发现这种方法在搜索一些最佳做法后最合适。为此,我注入了配置,然后按如下方式访问了我的配置密钥:

import play.api.Configuration

class myClass @Inject()(
  config: Configuration
) {
  val configValue: String = config.underlying.getString("configKey")
}

这样,您不会获得Option,而是获取String。如果它不可用,它会引发异常:

Error injecting constructor, com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'configKey'

主要目标是避免@peoplemerge已经提到的纯get解决方案,如果无则抛出特定异常。

答案 9 :(得分:2)

Java with play> 2.5.X您可以通过ConfigFactory帮助程序读取配置值:

ConfigFactory.load().getString("redis.url")

ConfigFactory.load().getInt("redis.port")

对象配置会将参数转换为正确的类型。它公开了处理任何java类型(getDouble,getLong等等)

的方法

文档: https://www.playframework.com/documentation/2.5.0/api/java/play/Configuration.html

答案 10 :(得分:1)

作为此处所有@Inject答案的一小部分贡献/改进,您不需要致电config.underlying实施。您可以直接使用config.getString

示例:

@Singleton
class RESTSessionChecker @Inject()(
    implicit override val conf: Configuration)
    extends Filter {

   val MAX_CONCURRENT_REQUESTS = conf.getString("MAX_CONCURRENT_REQUESTS").
         getOrElse("100").toInt
   ...

答案 11 :(得分:0)

正如其他人所说,你需要导入play.api.Play.current。然后,如果你运行:

current.configuration.getString("db.driver")

在2.3.x / scala 10上,您将获得

type mismatch; 
found   : Option[String]
required: String

如果这是必须的,这将有效:

url = current.configuration.getString("db.driver").get

有人建议更好的答案吗?

答案 12 :(得分:0)

//新方法2.5.x后

    import javax.inject.Inject
import play.api.Configuration

class Example @Inject() (playconfiguration: Configuration) {
    def index() = {
        val confString: String = playconfiguration.getString("confKey").get
    }

}

来源: https://www.webkj.com/play-framework/play-scala-2.5-reading-config-using-di

答案 13 :(得分:0)

有多种方法可以使用Scala在Play中访问配置

以下内容适用于Play 2.7.x

选项1:带有DI

import play.api.Configuration
.... other imports ...

class MyActor @Inject()(config: Configuration) extends Actor  {
 println(config.get[String]("akka_actor_custom_dispatcher"))
 println(config.get[String]("akka_actor_custom_dispatcher")) // w/o optional
 println(config.getOptional[Int]("value_1").getOrElse(2))    // with optional 
 .....
 }

选项2:不带DI

import play.api.Configuration
.... other imports ...

class MyActor() extends Actor {
 val config = new Configuration(ConfigFactory.load("application.conf")) // application.conf is optional 
 println(config.get[String]("akka_actor_custom_dispatcher"))
 println(config.get[String]("akka_actor_custom_dispatcher")) // w/o optional
 println(config.getOptional[Int]("value_1").getOrElse(2))    // with optional 
 .....
 }