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.