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));
}