Una classe carica le proprietà da un file e le usa mentre svolge i suoi compiti. A scopo di test, voglio essere in grado di modificare direttamente le proprietà senza dover utilizzare un file delle proprietà di test. Ho fatto l'implementazione, ma sembra piena di odori: sto lottando per mantenere questa cosa piccola (evitando strutture come Spring che avvolgono e iniettano le proprietà).
In particolare, non riesco a ricordare di aver visto un costruttore che si inizializza tramite un insieme di proprietà caricato staticamente - in particolare che imposta valori variabili da qualche parte oltre ai parametri passati.
Sto cercando argomenti a favore / contrari a questo approccio, e spero di trovare alcune alternative se questo è davvero poco cool come credo.
private static final String CONFIG_FILE_NAME = String.format("config-%s.properties",
null != System.getProperty("JAVA_ENV") ? System.getProperty("JAVA_ENV") : "development");
static {
PROPERTIES = new Properties();
try {
PROPERTIES.load(MyClass.class.getClassLoader().getResourceAsStream(CONFIG_FILE_NAME));
if (PROPERTIES.keySet().size() < 1) {
LOGGER.error(String.format("failed to load %s: no properties", CONFIG_FILE_NAME));
}
}
catch (final IOException ie) {
LOGGER.error(String.format("failed to load %s", CONFIG_FILE_NAME), ie);
}
}
private String property1;
private String property2;
public MyClass() {
property1 = PROPERTIES.getProperty("prop.1");
property2 = PROPERTIES.getProperty("prop.2");
}
/* public accessors for property1 and property2 go here */