Spring Properties je nach Systemumgebung
Im Beitrag Properties in Spring 4 und Spring Boot haben wir die Properties für ein Spring-Projekt gesetzt. Nun wollen wir uns noch ein Beispiel ansehen, wie wir diese Properties je nach Systemumgebung durch Setzen eine JVM Parameters unterschiedlich einstellen können:
Eine von vielen Möglichkeiten, z.B. am Entwicklungsrechner andere Properties zu setzen als in der Produktivumgebung ist über einen JVM-Parameter. Diese beim Start der JVM mittels dem -D Parameter übergebenen Variablen können mit System.getProperty() abgerufen werden.
Im folgenden Codebeispiel wird davon ausgegangen, dass der JVM der Parameter -DDEV_ENV=true am Entwicklungsrechner mitgegeben wird. Dann laden wir zuerst die properties-Datei und können in einer dev.properties alle Parameter überschreiben, welche wir in der Entwicklungsumgebung unterschiedlich haben wollen:
@Configuration
public class PropertiesConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
String devEnvStr = System.getProperty("DDEV_ENV");
boolean devEnv = false;
if ((devEnvStr != null) && (devEnvStr.toLowerCase().equals("true"))){
devEnv = true;
}
List<Resource> resourcesList = new ArrayList<Resource>();
resourcesList.add(new ClassPathResource("properties"));
if (devEnv) {
resourcesList.add(new ClassPathResource("debug.properties"));
}
configurer.setLocations(resourcesList.stream().toArray(Resource[]::new));
return configurer;
}
}
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.