Home / Class/ SpringFactoriesEnvironmentPostProcessorsFactory Class — spring-boot Architecture

SpringFactoriesEnvironmentPostProcessorsFactory Class — spring-boot Architecture

Architecture documentation for the SpringFactoriesEnvironmentPostProcessorsFactory class in SpringFactoriesEnvironmentPostProcessorsFactory.java from the spring-boot codebase.

Entity Profile

Relationship Graph

Source Code

core/spring-boot/src/main/java/org/springframework/boot/support/SpringFactoriesEnvironmentPostProcessorsFactory.java lines 39–85

class SpringFactoriesEnvironmentPostProcessorsFactory implements EnvironmentPostProcessorsFactory {

	private final SpringFactoriesLoader loader;

	SpringFactoriesEnvironmentPostProcessorsFactory(SpringFactoriesLoader loader) {
		this.loader = loader;
	}

	@Override
	public List<EnvironmentPostProcessor> getEnvironmentPostProcessors(DeferredLogFactory logFactory,
			ConfigurableBootstrapContext bootstrapContext) {
		ArgumentResolver argumentResolver = ArgumentResolver.of(DeferredLogFactory.class, logFactory);
		argumentResolver = argumentResolver.and(ConfigurableBootstrapContext.class, bootstrapContext);
		argumentResolver = argumentResolver.and(BootstrapContext.class, bootstrapContext);
		argumentResolver = argumentResolver.and(BootstrapRegistry.class, bootstrapContext);
		List<Object> postProcessors = new ArrayList<>();
		postProcessors.addAll(this.loader.load(EnvironmentPostProcessor.class, argumentResolver));
		postProcessors.addAll(loadDeprecatedPostProcessors(argumentResolver));
		AnnotationAwareOrderComparator.sort(postProcessors);
		return postProcessors.stream().map(Adapter::apply).collect(Collectors.toCollection(ArrayList::new));
	}

	@SuppressWarnings("removal")
	private List<org.springframework.boot.env.EnvironmentPostProcessor> loadDeprecatedPostProcessors(
			ArgumentResolver argumentResolver) {
		return this.loader.load(org.springframework.boot.env.EnvironmentPostProcessor.class, argumentResolver);
	}

	@SuppressWarnings("removal")
	record Adapter(
			org.springframework.boot.env.EnvironmentPostProcessor postProcessor) implements EnvironmentPostProcessor {

		@Override
		public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
			this.postProcessor.postProcessEnvironment(environment, application);
		}

		static EnvironmentPostProcessor apply(Object source) {
			if (source instanceof EnvironmentPostProcessor environmentPostProcessor) {
				return environmentPostProcessor;
			}
			return new Adapter((org.springframework.boot.env.EnvironmentPostProcessor) source);
		}

	}

}

Domain

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free