Wcześniej w Play! v1 bardzo łatwo było zdefiniować zmienne konfiguracyjne w programie, application.conf
a następnie uzyskać do nich dostęp w następujący sposób:
play.configuration("db.driver")
Jednak teraz nie mogę znaleźć w dokumentacji niczego do podobnych zastosowań w wersji 2 lub odpowiedniej alternatywy. Jaka jest metoda na to?
playframework-2.0
crockpotveggies
źródło
źródło
Odpowiedzi:
Od wersji Play 2.5
play.api.Play.current
jest przestarzały. Należy użyć iniekcji zależności, aby wstrzyknąćEnvironment
lubConfiguration
i użyć tego do odczytania wartości konfiguracyjnej:Sprawdź dokumentację Play, aby uzyskać bardziej szczegółową dyskusję.
źródło
Odpowiednikiem Play 2.0 Scala byłoby:
Będziesz także potrzebować
import play.api.Play
Pełna dokumentacja na ten temat znajduje się tutaj .
źródło
play.api.Play.maybeApplication.map(_.configuration.getString("db.driver"))
Dotyczy Play 2.0 - w kontrolerze Java można używać następujących elementów:
String optionValue = Play.application().configuration().getString("db.driver");
Aby wyświetlić zmienną, użyj tego:
@play.Play.application().configuration().getString("db.driver")
źródło
W Play 2.3.2 dla Javy możesz skorzystać z
com.typesafe.config.ConfigFactory
opcji:Szybko zmieniające się API!
źródło
Inna metoda testowana w Play 2.3 [.8] / Java w celu uzyskania dostępu do wartości z application.conf:
Aby sprawdzić wersję Play, sprawdź projekt pliku / wtyczki. Wiersz zawierający „wtyczkę sbt” powinien mieć specyfikację wersji taką jak „2.3.8”.
Jeśli na przykład application.conf zawiera linie
można zapytać o te wartości z pliku / klasy java, takiej jak
Metody get ... zwracają wartość null, jeśli wartość nie zostanie znaleziona, istnieją również metody get ..., które przyjmują wartość domyślną jako argument.
Aby uzyskać szczegółowe informacje, zobacz https://www.playframework.com/documentation/2.3.x/api/java/index.html
i obejrzyj grę klasową.
źródło
W Play Scala 2.3.x i 2.4.x, aby odczytać wartość z
conf/application.conf
, możesz wykonać następujące czynności:źródło
W Play 2.0.1 Java musisz to zrobić:
źródło
W Play 2.1, Scala Po pierwsze musisz
import play.api.Play Play.current.configuration.getString("varibale name")
źródło
W Javie z play> 2.5.X wartości konfiguracyjne można odczytać za pomocą pomocnika ConfigFactory:
lub
Obiekt Config przekształci parametr na właściwy typ. Udostępnia metody obsługi dowolnego typu Java (getDouble, getLong itp.)
Dokument: https://www.playframework.com/documentation/2.5.0/api/java/play/Configuration.html
źródło
Jeśli używasz Play Scala , po wyszukaniu kilku najlepszych praktyk uznałem to podejście za najbardziej odpowiednie. Aby to zrobić, wstrzyknąłem konfigurację, a następnie uzyskałem dostęp do mojego klucza konfiguracyjnego w następujący sposób:
W ten sposób nie otrzymasz Option, ale String. W przypadku, gdy nie jest dostępny, zgłasza wyjątek:
Głównym celem było uniknięcie czystego
get
rozwiązania, o którym @peoplemerge już wspomniało, podczas zgłaszania konkretnego wyjątku, jeśli None.źródło
Jako mały wkład / ulepszenie do wszystkich
@Inject
odpowiedzi tutaj, nie musisz dzwonić doconfig.underlying
implementacji. Możesz bezpośrednio użyćconfig.getString
przykład:
źródło
Scala umożliwia dostęp do konfiguracji w Play na wiele sposobów
Poniższe działa w Play 2.7.x
Opcja 1: z DI
Opcja 2: bez DI
źródło
@Inject()
zajęciach testowych?GuiceApplicationBuilder
daje ci szansę na zastąpienie domyślnych powiązań. Poza tym istniejące komponenty Play zostaną utworzone zgodnie z oczekiwaniami.Jak wspominali inni, musisz zaimportować plik play.api.Play.current. Następnie, jeśli biegniesz:
W wersji 2.3.x / scala 10 otrzymasz
Jeśli jest to obowiązkowe, zadziała:
Czy ktoś proponuje lepszą odpowiedź?
źródło
// nowy post podejścia 2.5.x
}
źródło: https://www.webkj.com/play-framework/play-scala-2.5-reading-config-using-di
źródło