📖 Scenario: You are creating a simple Spring Boot application. You want to understand how the @SpringBootApplication annotation works by breaking it down into its parts.
🎯 Goal: Build a basic Spring Boot application by manually adding the annotations that @SpringBootApplication combines. This helps you see what each part does.
📋 What You'll Learn
Create a main application class named DemoApplication
Add the @Configuration annotation
Add the @EnableAutoConfiguration annotation
Add the @ComponentScan annotation
Add the main method to run the application
💡 Why This Matters
🌍 Real World
Spring Boot applications use @SpringBootApplication to simplify setup and configuration, making it easier to start new projects quickly.
💼 Career
Understanding this annotation helps developers configure Spring Boot apps correctly and troubleshoot startup issues.
Progress0 / 4 steps
1
Create the main application class
Create a public class named DemoApplication in the package com.example.demo.
Spring Boot
Hint
Start by declaring the package and the class.
2
Add configuration annotation
Add the @Configuration annotation above the DemoApplication class declaration.
Spring Boot
Hint
Import and add @Configuration to mark this class as a source of bean definitions.
3
Add auto-configuration and component scan annotations
Add the @EnableAutoConfiguration and @ComponentScan annotations above the DemoApplication class declaration, along with their imports.
Spring Boot
Hint
These annotations enable Spring Boot's auto-configuration and tell it to scan for components.
4
Add the main method to run the application
Add a public static void main(String[] args) method inside DemoApplication that calls SpringApplication.run(DemoApplication.class, args). Import SpringApplication from org.springframework.boot.
Spring Boot
Hint
The main method starts the Spring Boot application.
Practice
(1/5)
1. What does the @SpringBootApplication annotation primarily do in a Spring Boot project?
easy
A. It only enables component scanning in the project.
B. It combines @Configuration, @EnableAutoConfiguration, and @ComponentScan annotations.
C. It disables auto-configuration to allow manual setup.
D. It marks a class as a REST controller.
Solution
Step 1: Understand the purpose of @SpringBootApplication
This annotation is a shortcut that bundles three annotations: @Configuration, @EnableAutoConfiguration, and @ComponentScan.
Step 2: Identify what each bundled annotation does
@Configuration marks the class as a source of bean definitions, @EnableAutoConfiguration enables automatic configuration based on classpath settings, and @ComponentScan scans for components in the package.
Final Answer:
It combines @Configuration, @EnableAutoConfiguration, and @ComponentScan annotations. -> Option B
Quick Check:
@SpringBootApplication = Combination of 3 annotations [OK]
Hint: Remember it bundles config, auto-config, and scanning [OK]
Common Mistakes:
Thinking it only enables component scanning
Assuming it disables auto-configuration
Confusing it with @RestController
2. Which of the following is the correct way to use @SpringBootApplication in a Spring Boot main class?
easy
A. Place @SpringBootApplication on the main class and include a main method with SpringApplication.run().
B. Use @SpringBootApplication on any class without a main method.
C. Add @SpringBootApplication on every component class.
D. Use @SpringBootApplication only on configuration classes without main methods.
Solution
Step 1: Identify where @SpringBootApplication belongs
This annotation should be on the main class that starts the Spring Boot application.
Step 2: Confirm the main method usage
The main class must have a main method that calls SpringApplication.run() to launch the app.
Final Answer:
Place @SpringBootApplication on the main class and include a main method with SpringApplication.run(). -> Option A
Quick Check:
Main class + @SpringBootApplication + main method = correct setup [OK]
Hint: Use @SpringBootApplication only on main app class with main() [OK]
Common Mistakes:
Putting @SpringBootApplication on every component
Omitting the main method
Using it on classes without starting the app
3. Given this main class code snippet, what will happen when you run it?
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
medium
A. The Spring Boot application starts with auto-configuration and component scanning.
B. The application throws a runtime error due to missing @ComponentScan.
C. The application starts but without any auto-configuration.
D. The code will not compile because @SpringBootApplication is missing parameters.
Solution
Step 1: Analyze the use of @SpringBootApplication
The annotation enables auto-configuration and component scanning by default.
Step 2: Check the main method execution
The SpringApplication.run() method starts the Spring Boot app with all default behaviors.
Final Answer:
The Spring Boot application starts with auto-configuration and component scanning. -> Option A
Quick Check:
@SpringBootApplication triggers auto-config and scanning [OK]
Hint: Default behavior includes auto-config and scanning [OK]
Common Mistakes:
Assuming @ComponentScan is required separately
Thinking auto-configuration is off by default
Believing parameters are mandatory for @SpringBootApplication
4. You have this code snippet:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
What is the purpose of the exclude attribute here?
medium
A. It changes the base package for component scanning.
B. It enables additional auto-configuration classes.
C. It disables the specified auto-configuration classes during startup.
D. It marks the class as a configuration without scanning.
Solution
Step 1: Understand the exclude attribute in @SpringBootApplication
The exclude attribute tells Spring Boot to skip certain auto-configuration classes.
Step 2: Identify the effect of excluding DataSourceAutoConfiguration
This prevents Spring Boot from automatically configuring a database connection, useful if you want manual setup.
Final Answer:
It disables the specified auto-configuration classes during startup. -> Option C