Spring / Spring Boot 4 Basics Interview Questions
What is @SpringBootApplication and what does it combine?
@SpringBootApplication is a composed annotation that is the standard entry point for Spring Boot applications. It combines three key annotations that together enable auto-configuration, component scanning, and configuration capabilities.
// @SpringBootApplication = @SpringBootConfiguration // + @EnableAutoConfiguration // + @ComponentScan @SpringBootApplication // the one annotation to rule them all public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); } } // What each constituent annotation does: // @SpringBootConfiguration: marks this as a Spring configuration class // (specialisation of @Configuration) // @EnableAutoConfiguration: tells Spring Boot to scan the classpath // and auto-configure beans based on what is found // e.g., finds spring-boot-starter-data-jpa -> auto-configures DataSource // @ComponentScan: scans the current package and sub-packages // for @Component, @Service, @Repository, @Controller, etc. // Default: scans the package of the annotated class // Customisations: @SpringBootApplication( // exclude specific auto-configurations: exclude = {DataSourceAutoConfiguration.class}, // scan additional packages: scanBasePackages = {"com.example.orders", "com.example.shared"} ) public class App { ... } // SpringApplication customisation in Boot 4: @SpringBootApplication public class App { public static void main(String[] args) { var app = new SpringApplication(App.class); app.setBannerMode(Banner.Mode.OFF); // disable ASCII art banner app.setLazyInitialization(true); // lazy init for faster startup app.run(args); } }
More Related questions...