Bird
Raised Fist0
Spring Bootframework~20 mins

@SpringBootApplication breakdown - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
SpringBootApplication Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What does @SpringBootApplication combine?
The @SpringBootApplication annotation is a shortcut for combining multiple annotations. Which three annotations does it combine?
A@Controller, @Service, @Repository
B@Bean, @Autowired, @Qualifier
C@Configuration, @EnableAutoConfiguration, @ComponentScan
D@Entity, @Table, @Id
Attempts:
2 left
💡 Hint
Think about annotations that configure, scan components, and enable automatic setup.
❓ component_behavior
intermediate
2:00remaining
How does @SpringBootApplication affect component scanning?
Given a Spring Boot application with @SpringBootApplication on the main class in package com.example.app, which packages will Spring scan for components by default?
AAll packages in the project regardless of location
BOnly <code>com.example.app</code> and its subpackages
COnly the exact package where the main class is located
DOnly <code>com.example</code> and its subpackages
Attempts:
2 left
💡 Hint
Think about where the main class is and how component scanning works by default.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in this Spring Boot main class
What is the syntax error in this Spring Boot main class code snippet?
Spring Boot
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);
    }
}
AMissing comma between MyApp.class and args in SpringApplication.run()
BMissing @ComponentScan annotation
CClass name should be lowercase
DMissing public modifier on main method
Attempts:
2 left
💡 Hint
Look carefully at the method call inside main.
❓ lifecycle
advanced
2:00remaining
What happens during Spring Boot application startup with @SpringBootApplication?
Which of the following best describes what happens when a Spring Boot application annotated with @SpringBootApplication starts?
AOnly scans components but does not configure beans automatically
BRuns the application without scanning or configuring anything
CStarts the server but requires manual bean configuration
DSpring Boot auto-configures beans, scans components, and starts the embedded server
Attempts:
2 left
💡 Hint
Remember what auto-configuration and component scanning do.
🔧 Debug
expert
3:00remaining
Why does a Spring Boot app fail to start with @SpringBootApplication?
You have a Spring Boot app with @SpringBootApplication on the main class. The app fails to start with a 'No qualifying bean' error for a service. What is the most likely cause?
AThe service class is outside the main class package and not scanned
BThe main class is missing the @EnableAutoConfiguration annotation
CThe application.properties file is missing
DThe main method is not static
Attempts:
2 left
💡 Hint
Think about component scanning and package structure.

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

  1. Step 1: Understand the purpose of @SpringBootApplication

    This annotation is a shortcut that bundles three annotations: @Configuration, @EnableAutoConfiguration, and @ComponentScan.
  2. 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.
  3. Final Answer:

    It combines @Configuration, @EnableAutoConfiguration, and @ComponentScan annotations. -> Option B
  4. 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

  1. Step 1: Identify where @SpringBootApplication belongs

    This annotation should be on the main class that starts the Spring Boot application.
  2. Step 2: Confirm the main method usage

    The main class must have a main method that calls SpringApplication.run() to launch the app.
  3. Final Answer:

    Place @SpringBootApplication on the main class and include a main method with SpringApplication.run(). -> Option A
  4. 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

  1. Step 1: Analyze the use of @SpringBootApplication

    The annotation enables auto-configuration and component scanning by default.
  2. Step 2: Check the main method execution

    The SpringApplication.run() method starts the Spring Boot app with all default behaviors.
  3. Final Answer:

    The Spring Boot application starts with auto-configuration and component scanning. -> Option A
  4. 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

  1. Step 1: Understand the exclude attribute in @SpringBootApplication

    The exclude attribute tells Spring Boot to skip certain auto-configuration classes.
  2. Step 2: Identify the effect of excluding DataSourceAutoConfiguration

    This prevents Spring Boot from automatically configuring a database connection, useful if you want manual setup.
  3. Final Answer:

    It disables the specified auto-configuration classes during startup. -> Option C
  4. Quick Check:

    exclude disables auto-config classes [OK]
Hint: exclude attribute disables unwanted auto-configurations [OK]
Common Mistakes:
  • Thinking exclude enables more configs
  • Confusing exclude with component scan base package
  • Assuming exclude marks configuration only
5. How can you customize the packages scanned by @SpringBootApplication if your components are outside the main class package?
hard
A. Use @EnableAutoConfiguration(basePackages = {...}) to specify scanning.
B. Add package names as parameters inside @SpringBootApplication directly.
C. Rename the main class package to match all component packages.
D. Use @ComponentScan(basePackages = {"com.example.other"}) alongside @SpringBootApplication.

Solution

  1. Step 1: Recognize default scanning behavior

    @SpringBootApplication scans components in its own package and subpackages by default.
  2. Step 2: Customize scanning with @ComponentScan

    To scan other packages, add @ComponentScan with basePackages specifying those packages.
  3. Final Answer:

    Use @ComponentScan(basePackages = {"com.example.other"}) alongside @SpringBootApplication. -> Option D
  4. Quick Check:

    Customize scanning with @ComponentScan basePackages [OK]
Hint: Add @ComponentScan with basePackages to scan outside packages [OK]
Common Mistakes:
  • Trying to pass packages directly to @SpringBootApplication
  • Renaming packages instead of configuring scanning
  • Using @EnableAutoConfiguration for scanning
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