package de.juplo.demos.multiplebeans;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import lombok.AllArgsConstructor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertySource;
-import java.util.regex.Pattern;
+import java.util.Arrays;
+@AllArgsConstructor
public class MultipleBeansEnvironmentPostProcessor implements EnvironmentPostProcessor {
- public final static Pattern PATTERN = Pattern.compile("juplo\\.sites\\[([0-9]+)\\]\\.(.+)");
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
+ String sites = null;
for (PropertySource source : environment.getPropertySources()) {
- System.out.println(source.getName());
+ Object found = source.getProperty("juplo.sites");
+ if (found != null)
+ sites = found.toString();
}
+
+ if (sites == null)
+ throw new IllegalArgumentException("Parameter juplo.sites is not set!");
+
+ application.addInitializers(new MultipleBeansApplicationContextInitializer(
+ Arrays.stream(sites.split(","))
+ .map(site -> site.trim())
+ .toArray(size -> new String[size])));
}
-}
+}
\ No newline at end of file