Chciałbym wiedzieć, jaki jest najbardziej efektywny sposób postępowania z nieruchomościami w Scali. Jestem zmęczony posiadaniem plików własnościowych gazillion, plików xml i innych typów plików konfiguracyjnych w Javie i zastanawiam się, czy istnieje "najlepsza praktyka", aby poradzić sobie z tymi bardziej wydajnymi w Scali?Obsługa nieruchomości w Scala
Odpowiedz
EDIT: Typesafe config daje proste i wydajne rozwiązanie do konfiguracji - https://github.com/typesafehub/config
oryginalne (ewentualnie nie bardzo przydatne):
Cytując "Programowanie w Scala":
„w Scala , możesz skonfigurować za pomocą samego kodu Scala. "
Łączenie w czasie wykonywania Scala pozwala na zamianę klas w czasie wykonywania, a ogólna filozofia tych języków ma tendencję do faworyzowania konwencji nad konfiguracją. Jeśli nie chcesz zajmować się plikami własności gazillion, po prostu ich nie masz.
Po co miałbyś pliki własności gazillion?
Nadal używam Apache commons Digester, która działa doskonale w Scali. Zasadniczo jest to bardzo prosty sposób tworzenia zdefiniowanej przez użytkownika mapy dokumentów XML na wywołania metod w zdefiniowanej przez użytkownika klasie konfiguratora . Uważam, że jest to niezwykle przydatne, gdy chcę przeanalizować niektóre dane konfiguracyjne (w przeciwieństwie do właściwości aplikacji).
Dla właściwości aplikacji można użyć struktury zależności wtrysku (np. Spring) lub po prostu starych plików właściwości. Byłbym też zainteresowany, aby zobaczyć, czy Scala oferuje coś na ten temat.
Zapoznaj się z Configgy, która wygląda jak schludna mała biblioteka. Obejmuje zagnieżdżanie i powiadomienia o zmianie. Zawiera także bibliotekę rejestrowania.
Niestety, nie skompilowałem się dla mnie na komputerach Mac, których próbowałem. Daj nam znać, jeśli masz więcej szczęścia i co myślisz ...
Aktualizacja: rozwiązane problemy z kompilacją Mac. Zobacz ten post.
- 1. Obsługa biblioteki dla funkcji Scala NotNull
- 2. Obsługa błędów Scala: Future For Comprehension
- 3. Obsługa przyszłych sekwencji i limitów czasu Scala
- 4. Uzyskanie klucza nieruchomości od wewnątrz wartości nieruchomości
- 5. Do nieruchomości, czy nie do nieruchomości?
- 6. Brakujące Nieruchomości w HttpWebRequest
- 7. Obsługa żądań JSON w Play Framework 2.0 Scala
- 8. Get "wartość" nieruchomości w IGrouping
- 9. Ustawodawcy nieruchomości wewnętrznych w C#
- 10. nieruchomości z parametrem
- 11. Sharepoint Szukaj nieruchomości Waga
- 12. wtryskowa nieruchomości na atrybutach
- 13. sprawdź istnienie nieruchomości
- 14. Przyrzeczona nieruchomości Ember
- 15. C# Delegat nieruchomości?
- 16. brakującym: po nieruchomości ID
- 17. Python vs deskryptor nieruchomości
- 18. Dostaję w nieskończonej pętli w nieruchomości seter
- 19. Ucieczka referencyjny nieruchomości w Spring pliku właściwości
- 20. użyj Częściowo w zagnieżdżonej nieruchomości z maszynopisem
- 21. Przeznaczenie nieruchomości mediaPlaybackAllowsAirPlay na UIWebView
- 22. Firefox: calc() nieprawidłowa wartość nieruchomości
- 23. liczba Liczba przedmiotów z nieruchomości
- 24. model niestandardowy spoiwem dla nieruchomości
- 25. ograniczenia Owl - definiowanie klas, które zawiera tylko nieruchomości o określonej wartości nieruchomości
- 26. Obsługa bajtów w PHP
- 27. Obsługa \ K w regex
- 28. Obsługa uwierzytelniania w Okhttp
- 29. Obsługa błędów w addPersistentStoreWithType
- 30. Obsługa prefiksów w Sequelize.js
Nie widzę, jak to odpowiada na pytanie. Czy możesz rozwinąć? "Zamiana w czasie wykonywania" wydaje się implikować konfigurację poprzez dynamiczną reakcję na środowisko wykonawcze. Jednak wiele parametrów konfiguracyjnych jest nieznanych dla środowiska wykonawczego, takich jak hasła do bazy danych lub administrator otrzymuje komunikaty o błędach. Możemy mówić o mechanizmach wykrywania usług, ale to jest przesada dla małych projektów i będą miały własne parametry konfiguracyjne, kopiąc pytanie w dół. W pewnym momencie musisz podać dane wejściowe do swojego programu. Jeśli uporządkujesz je w pary klucz/wartość, masz pliki właściwości ... – DrGary
W przypadku ustawień specyficznych dla środowiska (które naprawdę powinny być jedynymi, które są uzewnętrzniane) możesz uzyskać właściwości systemu, takie jak w Javie, w ten sposób: val databaseName = System.getProperty ("moja_nazwa_pliku_aplikacji"). Następnie należy je skonfigurować w skrypcie startowym i przekazać do środowiska wykonawczego w następujący sposób: java -Dmyapp.db.name = DeeBee MainClass. Co do haseł, prawdopodobnie nie powinno ich być w plikach, ale może to oznaczać, że aplikacja wyświetla monit o podanie hasła podczas uruchamiania. – George
Czy możesz podać przykład. Brzmi bardzo przydatny. – Jus12