Bird
Raised Fist0
Spring Bootframework~8 mins

How auto-configuration works in Spring Boot - Performance Optimization Steps

Choose your learning style10 modes available
Performance: How auto-configuration works
MEDIUM IMPACT
Auto-configuration affects application startup time and initial memory usage by loading many configuration classes automatically.
Configuring Spring Boot application startup
Spring Boot
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class})
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

// Excludes unused auto-configurations
Prevents loading unused auto-configurations, reducing startup time and memory footprint.
📈 Performance GainSaves 100-300ms startup time and reduces memory by tens of MBs depending on exclusions.
Configuring Spring Boot application startup
Spring Boot
@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

// No exclusions or customizations
Loads all auto-configuration classes, including many unused ones, increasing startup time and memory use.
📉 Performance CostBlocks startup for 200-500ms extra depending on app size; loads hundreds of beans unnecessarily.
Performance Comparison
PatternBeans LoadedStartup DelayMemory UsageVerdict
Default Auto-configuration100+ beansAdds 200-500msHigh memory use[X] Bad
Selective Exclusion50-70 beansAdds 50-150msModerate memory use[!] OK
Custom Minimal Config10-20 beansAdds <50msLow memory use[OK] Good
Rendering Pipeline
Auto-configuration runs during Spring Boot application startup before the app is ready to serve requests. It scans the classpath and applies configuration classes conditionally.
→Application Context Initialization
→Bean Creation
⚠️ BottleneckLoading and instantiating many auto-configuration classes and beans
Optimization Tips
1Exclude unused auto-configuration classes to speed up startup.
2Use conditional annotations to limit bean creation.
3Monitor startup time and bean count with Actuator.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the main performance impact of Spring Boot auto-configuration?
AIncreases application startup time by loading many beans automatically
BSlows down HTTP request handling after startup
CCauses layout shifts in the browser
DBlocks rendering of static resources
DevTools: Spring Boot Actuator and IDE Profiler
How to check: Enable Actuator endpoints like /beans and /startup; use IDE profiler to measure startup time and memory; check logs for auto-configurations applied.
What to look for: Look for long startup phases, many beans loaded, and auto-configuration classes applied to identify performance bottlenecks.

Practice

(1/5)
1. What is the main purpose of Spring Boot's auto-configuration feature?
easy
A. To disable all default Spring features
B. To require manual configuration of all beans and settings
C. To force the use of XML configuration files
D. To automatically set up common configurations based on project dependencies

Solution

  1. Step 1: Understand auto-configuration role

    Auto-configuration helps by setting up default configurations automatically when certain dependencies are present.
  2. Step 2: Compare options

    Options A, B, and D contradict the purpose of auto-configuration, which is to reduce manual setup, not increase it or disable features.
  3. Final Answer:

    To automatically set up common configurations based on project dependencies -> Option D
  4. Quick Check:

    Auto-configuration = automatic setup [OK]
Hint: Auto-configuration means less manual setup [OK]
Common Mistakes:
  • Thinking auto-configuration disables features
  • Assuming all configuration must be manual
  • Confusing auto-configuration with XML config
2. Which annotation enables Spring Boot's auto-configuration in a main application class?
easy
A. @SpringBootApplication
B. @EnableAutoConfig
C. @AutoConfigEnabled
D. @ConfigurationAuto

Solution

  1. Step 1: Identify the correct annotation

    @SpringBootApplication is a meta-annotation that includes @EnableAutoConfiguration, enabling auto-configuration.
  2. Step 2: Verify other options

    Options B, C, and D are not valid Spring Boot annotations and will cause errors.
  3. Final Answer:

    @SpringBootApplication -> Option A
  4. Quick Check:

    @SpringBootApplication enables auto-config [OK]
Hint: Use @SpringBootApplication for auto-config [OK]
Common Mistakes:
  • Using non-existent annotations
  • Forgetting @SpringBootApplication on main class
  • Confusing with @Configuration only
3. Given this Spring Boot application snippet, what will happen if spring-boot-starter-web is on the classpath?
@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}
medium
A. Spring Boot auto-configures a web server and MVC setup
B. No web server is configured automatically
C. Application fails to start due to missing annotations
D. Only a command-line runner is configured

Solution

  1. Step 1: Check classpath dependency effect

    Presence of spring-boot-starter-web triggers auto-configuration of embedded web server and MVC components.
  2. Step 2: Analyze application code

    The main class is annotated with @SpringBootApplication, enabling auto-configuration which activates for web components due to the starter-web dependency.
  3. Final Answer:

    Spring Boot auto-configures a web server and MVC setup -> Option A
  4. Quick Check:

    Web starter on classpath = web auto-config [OK]
Hint: Web starter triggers web server auto-config [OK]
Common Mistakes:
  • Ignoring the effect of dependencies on auto-config
  • Assuming no server without explicit config
  • Forgetting @SpringBootApplication annotation
4. What is the likely cause of this error in a Spring Boot app?
@SpringBootApplication
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }
}

// Error: No qualifying bean of type 'DataSource' available
medium
A. Incorrect main method signature
B. Auto-configuration is disabled by default
C. Missing database driver dependency causing auto-config to fail
D. Spring Boot does not support DataSource auto-configuration

Solution

  1. Step 1: Understand DataSource error

    Spring Boot tries to auto-configure a DataSource but fails if no driver dependency is found.
  2. Step 2: Check other options

    Main method is correct, auto-configuration is enabled by default, and Spring Boot supports DataSource auto-config.
  3. Final Answer:

    Missing database driver dependency causing auto-config to fail -> Option C
  4. Quick Check:

    Missing driver = DataSource bean error [OK]
Hint: Add DB driver to fix DataSource bean error [OK]
Common Mistakes:
  • Assuming main method is wrong
  • Thinking auto-config is off by default
  • Believing Spring Boot lacks DataSource support
5. You want to disable Spring Boot's auto-configuration for JPA but keep others enabled. Which is the correct way to do this?
hard
A. Remove all dependencies except JPA starter
B. Add @SpringBootApplication(exclude = JpaAutoConfiguration.class) on main class
C. Set spring.autoconfigure.enabled=false in application.properties
D. Delete the spring.factories file from the jar

Solution

  1. Step 1: Identify how to exclude specific auto-config

    Spring Boot allows excluding specific auto-config classes using the exclude attribute on @SpringBootApplication.
  2. Step 2: Evaluate other options

    Removing dependencies disables features but is not selective; disabling all auto-config is too broad; deleting spring.factories breaks the framework.
  3. Final Answer:

    Add @SpringBootApplication(exclude = JpaAutoConfiguration.class) on main class -> Option B
  4. Quick Check:

    Exclude specific auto-config via annotation [OK]
Hint: Use exclude attribute on @SpringBootApplication [OK]
Common Mistakes:
  • Disabling all auto-config instead of one
  • Removing dependencies instead of excluding config
  • Modifying internal Spring Boot files
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard