EnvironmentAotContribution Class — spring-boot Architecture
Architecture documentation for the EnvironmentAotContribution class in EnvironmentPostProcessorApplicationListener.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/support/EnvironmentPostProcessorApplicationListener.java lines 217–257
private static final class EnvironmentAotContribution implements BeanFactoryInitializationAotContribution {
private static final String ENVIRONMENT_VARIABLE = "environment";
private final String[] activeProfiles;
private EnvironmentAotContribution(String[] activeProfiles) {
this.activeProfiles = activeProfiles;
}
@Override
public void applyTo(GenerationContext generationContext,
BeanFactoryInitializationCode beanFactoryInitializationCode) {
GeneratedClass generatedClass = generationContext.getGeneratedClasses()
.addForFeature(AOT_FEATURE_NAME, (type) -> {
type.addModifiers(Modifier.PUBLIC);
type.addJavadoc("Configure the environment with AOT optimizations.");
type.addSuperinterface(EnvironmentPostProcessor.class);
});
generatedClass.getMethods().add("postProcessEnvironment", (method) -> {
method.addModifiers(Modifier.PUBLIC);
method.addAnnotation(Override.class);
method.addParameter(ConfigurableEnvironment.class, ENVIRONMENT_VARIABLE);
method.addParameter(SpringApplication.class, "application");
method.addCode(generateActiveProfilesInitializeCode());
});
generationContext.getRuntimeHints()
.reflection()
.registerType(GeneratedTypeReference.of(generatedClass.getName()),
MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
}
private CodeBlock generateActiveProfilesInitializeCode() {
CodeBlock.Builder code = CodeBlock.builder();
for (String activeProfile : this.activeProfiles) {
code.addStatement("$L.addActiveProfile($S)", ENVIRONMENT_VARIABLE, activeProfile);
}
return code.build();
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free