访问播放! 在application.conf中configuration2.0variables?

以前在玩! v1在application.conf定义configurationvariables非常简单,然后像这样访问它们:

 play.configuration("db.driver") 

然而,现在我无法在文档中find任何类似的用途,在第二版或适当的select。 这样做的方法是什么?

从Play 2.5开始,不推荐使用play.api.Play.current 。 您应该使用dependency injection来注入EnvironmentConfiguration并使用它来读取configuration值:

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

查看Play文档以获得更详细的讨论。

相当于此的Play 2.0 Scala将是:

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

您还需要import play.api.Play

完整的文档在这里 。

适用于Play 2.0 – 在Java Controller中,您可以使用以下内容:

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

为了在视图中获得variables使用这个:

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

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

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

快速移动的API!

Play 2.3 [.8] / Java中testing的另一种方法来访问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,如果没有find该值,也有get …方法将默认值作为参数。

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

并检查课堂玩耍。configuration。

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

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

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

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

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

如果您使用的是Play Scala ,那么在search一些最佳实践后,我发现这种方法是最合适的。 要做到这一点,我注入了configuration,然后像这样访问我的configuration密钥:

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

这样,你不会得到选项,但string。 万一它不可用,它会抛出一个exception:

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

主要目标是避免@peoplemerge已经提到的纯粹的get解决scheme,同时抛出一个特定的exception,如果没有。

正如其他人所说的,你需要导入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 

任何人都build议更好的答案?

作为对所有@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 ... 

在播放> 2.5.X的Java中,您可以通过ConfigFactory帮助程序读取configuration值:

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

要么

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

Config对象将把param转换成正确的types。 它公开了处理任何Javatypes的方法(getDouble,getLong等等)

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

//新的方法后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