Augmented Class — spring-boot Architecture
Architecture documentation for the Augmented class in SpringApplication.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java lines 1490–1571
public static class Augmented {
private final ThrowingConsumer<String[]> main;
private final Set<Class<?>> sources;
private final Set<String> additionalProfiles;
Augmented(ThrowingConsumer<String[]> main, Set<Class<?>> sources, Set<String> additionalProfiles) {
this.main = main;
this.sources = Set.copyOf(sources);
this.additionalProfiles = additionalProfiles;
}
/**
* Return a new {@link SpringApplication.Augmented} instance with additional
* sources that should be applied when the application runs.
* @param sources the sources that should be applied
* @return a new {@link SpringApplication.Augmented} instance
*/
public Augmented with(Class<?>... sources) {
LinkedHashSet<Class<?>> merged = new LinkedHashSet<>(this.sources);
merged.addAll(Arrays.asList(sources));
return new Augmented(this.main, merged, this.additionalProfiles);
}
/**
* Return a new {@link SpringApplication.Augmented} instance with additional
* profiles that should be applied when the application runs.
* @param profiles the profiles that should be applied
* @return a new {@link SpringApplication.Augmented} instance
* @since 3.4.0
*/
public Augmented withAdditionalProfiles(String... profiles) {
Set<String> merged = new LinkedHashSet<>(this.additionalProfiles);
merged.addAll(Arrays.asList(profiles));
return new Augmented(this.main, this.sources, merged);
}
/**
* Run the application using the given args.
* @param args the main method args
* @return the running {@link ApplicationContext}
*/
public SpringApplication.Running run(String... args) {
RunListener runListener = new RunListener();
SpringApplicationHook hook = new SingleUseSpringApplicationHook((springApplication) -> {
springApplication.addPrimarySources(this.sources);
springApplication.setAdditionalProfiles(this.additionalProfiles.toArray(String[]::new));
return runListener;
});
withHook(hook, () -> this.main.accept(args));
return runListener;
}
/**
* {@link SpringApplicationRunListener} to capture {@link Running} application
* details.
*/
private static final class RunListener implements SpringApplicationRunListener, Running {
private final List<ConfigurableApplicationContext> contexts = Collections
.synchronizedList(new ArrayList<>());
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
this.contexts.add(context);
}
@Override
public ConfigurableApplicationContext getApplicationContext() {
List<ConfigurableApplicationContext> rootContexts = this.contexts.stream()
.filter((context) -> context.getParent() == null)
.toList();
Assert.state(!rootContexts.isEmpty(), "No root application context located");
Assert.state(rootContexts.size() == 1, "No unique root application context located");
return rootContexts.get(0);
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free