Ich möchte dem globalen Gültigkeitsbereich ein Objekt hinzufügen, und um es zu konstruieren, muss ich ihm einen Pfad zu einer Datei übergeben. Ich möchte den Dateipfad in der Quelle nicht hart codieren, und ich möchte um diesen Pfad aus der application.conf zu erhalten.
Das Problem ist, dass ich nicht weiß, wie ich auf diese Eigenschaften von der Java-Klasse aus zugreifen kann. Ich habe folgendes versucht:
Configuration.root().getString("file.path")
Es endet jedoch mit einer NullPointerException .
Bin ich falsch in der Annahme, dass es eine globale Konfigurationsinstanz gibt, die ich verwenden kann? Vielen Dank.
Play.application().configuration().getString("your.key")
ausprobieren
Wie im Kommentar (nico_ekito) angegeben, verwenden Sie bitte play.Play
und nicht play.api.Play
. play.api.Play
ist für Scala-Controller (siehe Kommentar von Marcus Biesior Biesioroff)
Darüber hinaus verwendet play https://github.com/typesafehub/config unter der Haube, um auch einige Einblicke zu erhalten.
Auch wenn es einfach zu sein scheint, haben Sie hier die Methode scala, um Eigenschaften aus der Konfigurationsdatei abzurufen:
Play 2.0 und 2.1:
import play.api.Play.current
...
Play.application.configuration.getString("your.key")
Play 2.2 und +
import play.api.Play.current
...
current.configuration.getString("your.key")
Typesafe config verwenden
import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");
Von Play 2.4 and +
aus ist es besser, die Abhängigkeitseingabe für den Zugriff auf Konfigurationen zu verwenden:
import play.Configuration;
import javax.inject.Inject;
@Inject
private Configuration configuration;
...
String value = configuration.getString("your.key");
Da Play 2 die Typesafe-Konfigurationsbibliothek verwendet, habe ich meine Variablen in application.conf folgendermaßen aufgerufen:
ConfigFactory.load().getString("my.var");
Im Spiel ist Java:
import play.Play;
...
Play.application().configuration().getString("key")
Verwendung wie folgt (In Play 1.2.5 getestet)
${play.configuration.getProperty('my.var')}
wobei meine.var in der Datei application.conf angegeben werden sollte
Als Referenz für den Zugriff von der Vorlage aus (für das Spiel <2)
play.configuration['your.key']
Wie die Leute erwähnt haben, existiert Play.application.configuration
nicht mehr.
In Play Scala 2.3.x können Sie zum Lesen eines Werts aus conf/application.conf
Folgendes tun:
import play.api.Play.current
...
current.configuration.getString("key")
Importiere das
import com.typesafe.config.Config;
und schreibe die folgenden Zeilen
private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");
import play.Play;
String myVal = Play.configuration.getProperty("your.key").toString();
ich verwende das in meiner App und es funktioniert
Vergessen Sie nicht, play zu importieren. Spielen. Ich hoffe es hilft dir
In Wiedergabe 1.2.x
import play.Play;
...
String version = Play.configuration.getProperty("application.version.number", "1.1.1");
wobei der zweite Parameter der Standardwert ist
Ab Version 2.5 benutzen Sie bitte play.Application Klasse die injiziert werden soll und dann application.config().getString("your.property.here")