访问播放! 在application.conf中configuration2.0variables?
以前在玩! v1在application.conf
定义configurationvariables非常简单,然后像这样访问它们:
play.configuration("db.driver")
然而,现在我无法在文档中find任何类似的用途,在第二版或适当的select。 这样做的方法是什么?
从Play 2.5开始,不推荐使用play.api.Play.current
。 您应该使用dependency injection来注入Environment
或Configuration
并使用它来读取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