2012-01-24 15 views
10

Esiste una libreria Java simile a libconfig per C++, in cui il file di configurazione è memorizzato in un formato simile a JSON che può essere modificato dall'uomo e in seguito letto da il programma?Configurazione modificabile umana simile a JSON o simile a un programma YAML in Java

Non voglio utilizzare Spring o nessuna delle strutture più grandi. Quello che sto cercando è una libreria piccola, veloce e autonoma. Ho guardato a java.util.Properties, ma non sembra supportare i dati di configurazione gerarchici/nidificati.

risposta

18

Penso che https://github.com/typesafehub/config è esattamente quello che stai cercando. Il formato è chiamato HOCON per Notazione oggetto ottimizzato per la configurazione umana e un super-set di JSON.

Examples of HOCON:

HOCON che è valida anche JSON:

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

HOCON supporta anche il formato proprietà standard, in modo da vale quanto segue così:

foo.bar=10 
foo.baz=12 

Una delle caratteristiche che trovo molto utile è l'ereditarietà, questo allo ws tu per stratificare le configurazioni. Ad esempio una libreria avrebbe un reference.conf e l'applicazione che utilizza la libreria avrebbe un application.conf. Le impostazioni nello application.conf sostituiranno le impostazioni predefinite in reference.conf.

Standard Behavior per configurazioni di carico:

Il metodo comodo ConfigFactory.load() carica il seguente (prima elencati sono priorità superiore):

  • proprietà di sistema application.conf (tutte le risorse su classpath con questo nome)
  • application.json (tutte le risorse su classpath con questo nome )
  • application.properties (tutte le risorse su classpath con questo nome )
  • riferimento.conf (tutte le risorse sul classpath con questo nome)
0

C'è una libreria Java per gestire i file JSON, se è quello che stai cercando:

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

Partenza altri strumenti sulla pagina principale:

http://json.org/

+0

Beh, ho bisogno di qualcosa che non sono Non devi preoccuparti di analizzare il file. Tutto quello che dovrei fare è inizializzare con il nome del file, e poi leggere le chiavi usando un singolo comando. –

+0

Questo è esattamente ciò di cui hai bisogno. Forse non un singolo comando, ma abbastanza vicino a quello. – maksimov

4

ho trovato questo HOCON esempio:

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 

per leggere i valori:

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] 

Riferimento: marcinkubala.wordpress.co m