Configuration

Eine elegante Möglichkeit flexibel verschiedene Konfigurationsvarianten zu kombinieren ist das Commons Configuration Framework. Es ermöglicht Configs aus Propertie-Files, DBs, JNDI, XMLs, ... zu kombinieren.

Eine Integration in Maven braucht:
<dependencies>
    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.10</version>
    </dependency>
</dependencies>

Dabei lassen sich verschiedene Config-Quellen auch in eine gemeinsame Struktur kombinieren, der man die Herkunft nicht mehr ansieht.
Ausserdem lassen sich Teilbäume ausgeben:

CompositeConfiguration cc = new CompositeConfiguration();
cc.addConfiguration(new SystemConfiguration()); // first
cc.addConfiguration(new PropertiesConfiguration("config2.properties")); // second
cc.addConfiguration(new PropertiesConfiguration("config1.properties")); // last
Iterator<String> keys = cc.getKeys("java.vm");
while(keys.hasNext()){
    String k = keys.next();
    System.out.println(k+" = "+cc.getProperty(k));
}