2012-01-24 5 views
10

Czy istnieje biblioteka Java podobny do libconfig dla C++, gdzie znajduje się plik konfiguracyjny jest zapisany w formacie JSON-like, które mogą być edytowane przez ludzi, a później odczytać z program?edycji JSON-podobnych lub YAML-jak konfiguracja Ludzki Program w Javie

Nie chcę używać Springa ani żadnej z większych frameworków. To, czego szukam, to mała, szybka, samodzielna biblioteka. Spojrzałem na java.util.Properties, ale wydaje się, że nie obsługuje on hierarchicznych/zagnieżdżonych danych konfiguracyjnych.

Odpowiedz

18

Myślę, że https://github.com/typesafehub/config jest dokładnie tym, czego szukasz. Format ten nosi nazwę HOCON dla Ludzki zoptymalizowany obiekt konfiguracyjny Notacja i jest super zestawem JSON.

Examples of HOCON:

HOCON to również ważny JSON:

{ 
    "foo" : { 
     "bar" : 10, 
     "baz" : 12 
    } 
} 

HOCON obsługuje formatu ogłoszenia standardowe, więc po to ważne także:

foo.bar=10 
foo.baz=12 

Jedną z funkcji, które uważam za bardzo użyteczne, jest dziedziczenie, to wszystko ws do konfiguracji warstw. Na przykład biblioteka miałaby numer reference.conf, a aplikacja korzystająca z biblioteki miałaby numer application.conf. Ustawienia w application.conf zastąpią wartości domyślne w reference.conf.

Standard Behavior do załadunku configs:

metody wygoda ConfigFactory.load() wczytuje następujące (pierwszy na liście jest wyższy priorytet):

  • właściwości systemu application.conf (wszystkie zasoby na ścieżce klasy z nazwą )
  • application.json (wszystkie zasoby na ścieżce klas z tą nazwą )
  • application.properties (wszystkie zasobów na ścieżce klasy z tym nazwa)
  • referencyjne.conf (wszystkie zasoby na ścieżce klasy o tej nazwie)
0

Istnieje biblioteki Java do obsługi plików JSON, czy to, czego szukasz:

http://www.json.org/java/index.html

Sprawdź inne narzędzia na stronie głównej:

http://json.org/

+0

Cóż, potrzebuję czegoś, czego nie chcę w ogóle nie musisz się zastanawiać nad parsowaniem pliku. Wszystko, co powinienem zrobić, to zainicjować z nazwą pliku, a następnie odczytać klucze za pomocą pojedynczego polecenia. –

+0

Dokładnie tego potrzebujesz. Może nie jedno polecenie, ale wystarczająco blisko. – maksimov

4

Znalazłem HOCON przykład:

my.organization { 
    project { 
     name = "DeathStar" 
     description = ${my.organization.project.name} "is a tool to take control over whole world. By world I mean couch, computer and fridge ;)" 
    } 
    team { 
     members = [ 
      "Aneta" 
      "Kamil" 
      "Lukasz" 
      "Marcin" 
     ] 
    } 
} 
my.organization.team.avgAge = 26 

do odczytu wartości:

val config = ConfigFactory.load() 
config.getString("my.organization.project.name") // => DeathStar 
config.getString("my.organization.project.description") // => DeathStar is a tool to take control over whole world. By world I mean couch, computer and fridge ;) 
config.getInt("my.organization.team.avgAge") // => 26 
config.getStringList("my.organization.team.members") // => [Aneta, Kamil, Lukasz, Marcin] 

odniesienia: marcinkubala.wordpress.co m

Powiązane problemy