Top 10 Spring Boot Interview Questions with Practical Examples
Spring Boot has become a popular Java framework for developing microservices and enterprise applications due to its ability to streamline configuration processes and accelerate development. Companies frequently test candidates on their understanding of key Spring Boot concepts during technical interviews.
This detailed guide addresses the Top 10 Spring Boot Interview Questions, providing explanations and practical examples to help you ace your next interview.
Table of Contents
- What is Spring Boot and How is It Different from Spring?
- What Are Starter Dependencies?
- Explain @SpringBootApplication
- What is the Use of CommandLineRunner?
- Difference Between @RestController and @Controller
- How Does Spring Boot Autoconfiguration Work?
- What is Actuator and What Can You Monitor?
- Profile-Based Configurations
- How to Handle Exceptions Globally?
- How to Connect and Test with H2 Database?
1. What is Spring Boot and How is It Different from Spring?
Spring Boot is an extension of the Spring framework designed to simplify application creation. It eliminates the need for extensive XML configurations by providing default configurations and embedded servers.
Key Differences
| Aspect | Spring Framework | Spring Boot |
|————————————-|————————————–|————————————–|
| Configuration | Requires manual XML/Java configuration. | Provides autoconfiguration. |
| Server | External server setup required (e.g., Tomcat). | Comes with embedded servers like Tomcat or Jetty. |
| Development Speed | Comparatively slower due to extensive setup. | Fast and streamlined development. |
Example
- Spring Framework:
<bean id="myBean" class="com.example.MyClass"/>
- Spring Boot:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` [Learn more about Spring Boot](https://spring.io/projects/spring-boot) --- ## 2. What Are Starter Dependencies? **Starter dependencies** in Spring Boot are predefined sets of dependencies to simplify build configurations. They group commonly required libraries so developers don’t have to include each dependency manually. ### Popular Starters - `spring-boot-starter-web`: For web applications. - `spring-boot-starter-data-jpa`: For database interactions using JPA. #### Example in `pom.xml` ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Benefits:
- Reduces boilerplate configuration.
- Ensures uniform library versions.
Explore all Spring Boot starters
3. Explain @SpringBootApplication
The @SpringBootApplication
annotation is a composite of three annotations that work together to configure Spring Boot applications.
Breakdown
@EnableAutoConfiguration
– Enables autoconfiguration to reduce manual setup.@ComponentScan
– Scans for components and beans in the current package.@Configuration
– Indicates that the class has@Bean
definitions for configuration.
Example:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Pro Tip: This annotation should always be located in the root package to ensure proper scanning.
4. What is the Use of CommandLineRunner?
CommandLineRunner
is an interface in Spring Boot used to execute code after the application context has been initialized.
Example:
@Component public class MyCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) { System.out.println("Application has started!"); } }
Use Case: Initialize a database or run a batch operation during startup.
5. Difference Between @RestController and @Controller
| Aspect | @Controller
| @RestController
|
|———————–|—————————————-|—————————————|
| Purpose | Returns view templates (e.g., Thymeleaf, JSP). | Directly returns data (e.g., JSON or XML). |
| Annotation Combination | Requires @ResponseBody
. | Includes @ResponseBody
by default. |
Example Using @RestController:
@RestController public class MyController { @GetMapping("/greet") public String greet() { return "Hello, World!"; } }
6. How Does Spring Boot Autoconfiguration Work?
Spring Boot’s autoconfiguration mechanism scans for available classes on the classpath and automatically configures beans.
How It Works
- Uses
spring.factories
to determine default configurations. - Developers can override these defaults if needed.
Example
When spring-boot-starter-web
is included, Spring Boot auto-configures a DispatcherServlet
for handling web requests.
7. What is Actuator and What Can You Monitor?
Spring Boot Actuator provides out-of-the-box production-grade monitoring and metrics for your application.
Example of Actuator Endpoints
/actuator/health
– Reports the health of the application./actuator/metrics
– Provides metrics like memory and thread usage.
Activation in application.properties
management.endpoints.web.exposure.include=*
8. Profile-Based Configurations
Profiles in Spring Boot allow switching between configurations based on deployment needs (e.g., dev/test/prod).
Example Using Profiles
Application configuration files:
-
application-dev.properties
application-prod.properties
Activate a profile:
spring.profiles.active=dev
9. How to Handle Exceptions Globally?
Use @ControllerAdvice
to define custom global exception handlers.
Example:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleException(Exception ex) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body("An error occurred."); } }
10. How to Connect and Test with H2 Database?
The H2 database is an in-memory database commonly used for testing.
Steps to Integrate H2
- Add H2 dependency:
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency>
- Configure
application.properties
:
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=
- Access H2 Console:
-
- Visit
http://localhost:<port>/h2-console
- Visit
FAQs
What is the main purpose of Spring Boot?
To simplify application development by removing manual configuration tasks.
How does @SpringBootApplication
simplify configuration?
It encapsulates multiple annotations (@EnableAutoConfiguration
, @ComponentScan
, @Configuration
) into one.
What is DevTools in Spring Boot?
Spring Boot DevTools provides features like live reloading during development for faster iteration.
Summary
Spring Boot transforms the way Java applications are developed by minimizing configuration, adding robust monitoring, and making development seamless. By understanding these foundational concepts, you’ll be well-equipped to handle Spring Boot interview questions and build high-performance applications.
Continue practicing with these examples and frameworks to deepen your Spring Boot expertise!