以前在玩! V1這是很容易在application.conf
定義配置變量,然後訪問它們像這樣:訪問玩! application.conf中的2.0配置變量?
play.configuration("db.driver")
但是現在我找不到在v2或合適的替代類似用途的文檔中任何事情。這樣做的方法是什麼?
以前在玩! V1這是很容易在application.conf
定義配置變量,然後訪問它們像這樣:訪問玩! application.conf中的2.0配置變量?
play.configuration("db.driver")
但是現在我找不到在v2或合適的替代類似用途的文檔中任何事情。這樣做的方法是什麼?
截至Play 2.5,play.api.Play.current
已棄用。你應該使用依賴注入注入Environment
或Configuration
並用它來讀取配置值:
class HomeController @Inject() (configuration: play.api.Configuration) extends Controller {
def config = Action {
Ok(configuration.underlying.getString("db.driver"))
}
}
結帳的Play documentation進行更詳細的討論。
感謝您提供更新的答案。我將把這標記爲Play的未來用戶的正確答案! 2.x – crockpotveggies 2016-05-09 19:23:42
謝謝,這應該很好,直到Play再次更改。 – Karlth 2017-05-14 14:38:31
的播放2.0斯卡拉相當於這將是:
Play.current.configuration.getString("db.driver")
您還需要import play.api.Play
這個完整的文檔是here。
非常感謝,我欣賞鏈接。希望我們可以在API瀏覽器之外的Scala主頁中看到更多文檔:) – crockpotveggies 2012-03-25 05:23:08
請注意,根據情況,您無法假定應用程序尚未啓動,或者您不需要應用程序,直到這部分代碼;你可以使用'play.api.Play.maybeApplication.map(_。configuration.getString(「db.driver」))' – 2012-03-26 04:18:32
這現在在Play 2.5中已經被棄用了。請參閱[遷移指南](https://www.playframework.com/documentation/2.5.x/Migration25#Deprecated-play.Play-and-play.api.Play-methods) – Breavyn 2016-04-02 00:55:16
適用於播放2.0 - 在的Java控制器您可以使用下面:
String optionValue = Play.application().configuration().getString("db.driver");
要獲得變量鑑於使用這樣的:
@play.Play.application().configuration().getString("db.driver")
在玩2.0.1的Java,你需要這樣做:
import play.Application.*;
...
String optionValue = play.Play.application().configuration().getString("my.config");
在玩2.1,斯卡拉 首先你必須import play.api.Play Play.current.configuration.getString("varibale name")
在玩2.3.2的Java你可以使用com.typesafe.config.ConfigFactory
選項:
Config conf = ConfigFactory.load();
String myFooBarConfiguration = conf.getString("foo.bar");
快速移動的API!
這是當前版本Play的正確答案...不使用DI。 – toidiu 2016-09-06 06:38:48
此解決方案獨立於Play版本。它也適用於Scala。如果他們想改變那個接入點,可能依賴於HOCON版本。 – 2017-05-17 23:30:56
在播放斯卡拉2.3.x版本2.4.x的和,從conf/application.conf
讀取值,你可以做到以下幾點:
import play.api.Play.current
...
current.configuration.getString("db.driver")
正如其他人所說,你需要導入play.api.Play。當前。然後,如果你運行:
current.configuration.getString("db.driver")
在2.3.x版本/ 10階,你會得到
type mismatch;
found : Option[String]
required: String
如果這是強制性的,這將工作:
url = current.configuration.getString("db.driver").get
任何建議更好回答?
在測試的另一種方法播放2.3 [0.8]/Java的從application.conf訪問值:
要檢查遊戲版本,請檢查該文件的項目/插件。包含「sbt-plugin」的行應該有「2.3.8」之類的版本規範。
例如,如果應用程序。CONF包含線
myConfigStringValue=abc
myConfigBooleanValue=true
一個可以查詢,從一個java文件/類值一樣
import play.Configuration;
...
String myString = Configuration.root().getString("myConfigStringValue");
Boolean myBoolean = Configuration.root().getBoolean("myConfigBooleanValue");
的get ...方法返回null如果未找到值,也有得到。 ..採用默認值作爲參數的方法。
詳見 https://www.playframework.com/documentation/2.3.x/api/java/index.html
,並檢查類play.Configuration。
如果你正在使用玩斯卡拉,我發現這種方法是最合適的搜索一些最佳做法後。要做到這一點,我注入配置,然後訪問像這樣我的配置重點:
import play.api.Configuration
class myClass @Inject()(
config: Configuration
) {
val configValue: String = config.underlying.getString("configKey")
}
這樣,你沒有得到的選項,但是字符串。如果它沒有,它拋出一個異常:
Error injecting constructor, com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'configKey'
主要目的是爲了避免如果沒有拋出時的特定異常@peoplemerge已經提到的純get
解決方案。
作爲對此處所有@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
...
在Java中與遊戲> 2.5.X你可以通過ConfigFactory幫手讀取配置值:
ConfigFactory.load().getString("redis.url")
或
ConfigFactory.load().getInt("redis.port")
對象配置 wil我將param轉換爲正確的類型。它暴露的方法來處理任何Java類型(getDouble,getLong,等等等等)
文件: https://www.playframework.com/documentation/2.5.0/api/java/play/Configuration.html
簡單並避免在所有控制器中注入值... – cyril 2017-12-01 12:13:16
//新方法後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
對於新來訪者來說,這個問題不限於Play 2.0。其他多個播放版本的其他多個答案已在下面進行。 – saurabheights 2017-03-31 14:58:10