Spring Boot has become the go-to framework for building production-ready Java applications quickly and efficiently and Spring Boot interviews have become more challenging. Built on top of the Spring Framework, it eliminates boilerplate code, simplifies configuration, and enables developers to create stand-alone, microservice-based applications with minimal effort.
As enterprise applications increasingly adopt microservices and cloud-native architectures, Spring Boot has grown in popularity among developers and hiring managers alike. Whether you are a fresher learning enterprise application development or an experienced Java developer preparing for backend interviews, mastering Spring Boot is essential.
In this blog, we have compiled the top 50 Spring Boot interview questions and answers—carefully selected to cover both foundational and advanced topics. These questions will help you understand real-world usage, internal mechanisms, and best practices needed to crack interviews with confidence.
Target Audience
This blog is designed to help a wide range of learners and professionals who want to strengthen their understanding of Spring Boot interview and succeed in technical interviews. It is especially useful for:
- Freshers preparing for backend developer roles and campus placements involving Spring Boot and Java.
- Experienced Java developers looking to transition into Spring Boot-based projects or microservices architecture.
- Full-stack developers seeking to solidify their backend knowledge using Spring Boot.
- Tech interview candidates aiming to cover all important topics from auto-configuration to security and database integration.
- Self-learners and bootcamp graduates who want to bridge the gap between theoretical knowledge and interview expectations.
If you are planning to appear in a Java or backend-focused spring boot interview, this guide will help you revise and practice with clarity and confidence. Let us begin with first set of questions and answers now.
Spring Boot Basics (Questions 1–10)
This section covers the fundamental concepts of Spring Boot. These questions are often asked to test your understanding of what Spring Boot is, how it works, and why it is widely used in Java application development.
Q1. What is Spring Boot?
Answer: Spring Boot is a framework built on top of the Spring Framework that simplifies the development of stand-alone, production-ready Spring applications. It removes boilerplate code and reduces configuration effort by using auto-configuration, embedded servers, and starter dependencies.
Q2. What are the main features of Spring Boot?
Answer:
- Auto-configuration of Spring beans based on project setup
- Starter dependencies to simplify Maven/Gradle configuration
- Embedded servers like Tomcat and Jetty
- Production-ready features like health checks, metrics via Spring Boot Actuator
- Minimal configuration using annotations and defaults
Q3. How is Spring Boot different from Spring Framework?
Answer:
- Spring requires manual configuration and setup; Spring Boot provides automatic configuration.
- Spring Boot includes embedded servers; traditional Spring applications require external servers.
- Spring Boot has opinionated defaults, while Spring gives you full control with more complexity.
Q4. What is a Spring Boot starter?
Answer: A starter is a set of convenient dependency descriptors. It bundles required libraries for a specific feature.
Examples:
spring-boot-starter-web
for building web appsspring-boot-starter-data-jpa
for database access using JPA
Q5. What is the use of the @SpringBootApplication
annotation?
Answer:@SpringBootApplication
is a meta-annotation that combines:
@Configuration
: Marks the class as a source of bean definitions@EnableAutoConfiguration
: Enables Spring Boot’s auto-configuration@ComponentScan
: Scans for components in the package
Q6. How do you run a Spring Boot application?
Answer: You can run it using the main
method in the application class:
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
Or by executing mvn spring-boot:run
or running the packaged JAR file.
Q7. What is auto-configuration in Spring Boot?
Answer: Auto-configuration automatically configures Spring beans based on the classpath, defined properties, and existing configurations. It reduces the need for manual @Bean
declarations.
Q8. What is the default port number used by Spring Boot?
Answer: By default, Spring Boot uses port 8080 for web applications.
You can change it using:
server.port=9090
Q9. What is the purpose of application.properties
or application.yml
?
Answer: These files are used to configure application settings such as database URLs, port numbers, logging levels, etc.
Example (application.properties
):
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
server.port=8081
Q10. How do you enable debugging in a Spring Boot application?
Answer: You can enable debug mode in application.properties
:
debug=true
Or by passing --debug
as a command-line argument.
Auto-Configuration, Annotations & Properties (Questions 11–20)
This section dives deeper into how Spring Boot minimizes boilerplate through auto-configuration, powerful annotations, and flexible property management.
Q11. What is @EnableAutoConfiguration
in Spring Boot?
Answer: @EnableAutoConfiguration
tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings. It is typically included within @SpringBootApplication
.
Q12. What is the purpose of @ComponentScan
?
Answer: @ComponentScan
tells Spring where to look for annotated components (@Component
, @Service
, @Repository
, @Controller
).
It ensures that all required beans are picked up during runtime.
Q13. What is the order of precedence for Spring Boot properties?
Answer: From highest to lowest:
- Command line arguments
application.properties
orapplication.yml
- Environment variables
- Default values in code
Q14. What is the difference between @Component
, @Service
, @Repository
, and @Controller
?
Annotation | Use Case |
---|---|
@Component | Generic stereotype for beans |
@Service | Business logic layer |
@Repository | Persistence/data access layer |
@Controller | Web controller layer (MVC) |
Q15. What is the difference between application.properties
and application.yml
?
Answer: Both are used for configuration, but application.yml
supports hierarchical data more cleanly.
Example in application.yml
:
server:
port: 8080
Q16. What is @Value
annotation used for?
Answer: @Value
is used to inject property values from application.properties
or environment variables.
Example:
@Value("${server.port}")
private int port;
Q17. What is a @Configuration
class?
Answer: A class marked with @Configuration
is used to define beans manually using @Bean
.
It is a replacement for traditional XML configuration.
Q18. How do you define custom properties in Spring Boot?
Answer: You can create your own properties in application.properties
:
app.title=SpringBootApp
Then bind it using:
@Value("${app.title}")
private String title;
Or map it using @ConfigurationProperties
.
Q19. What is @ConfigurationProperties
in Spring Boot?
Answer: It binds a group of related properties to a Java object.
Example:
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private int timeout;
}
Q20. How do you externalize configuration in Spring Boot?
Answer: Spring Boot supports:
- Command-line args
- Environment variables
- External
.properties
or.yml
files .env
files or cloud config servers (for distributed setups)
This helps in managing different configurations for different environments (dev, test, prod).
Spring Boot with Web, REST & MVC (Questions 21–30) for Spring Boot Interview
This section covers the web layer of Spring Boot — including building RESTful APIs, handling requests, and managing exceptions in Spring MVC.
Q21. How do you create a REST API using Spring Boot?
Answer: Use @RestController
along with request mapping annotations like @GetMapping
, @PostMapping
, etc.
Example:
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getAllUsers() {
return userService.findAll();
}
}
Q22. What is the difference between @Controller
and @RestController
?
Answer:
@Controller
returns views (typically HTML) and is used withViewResolver
.@RestController
is a convenience annotation that combines@Controller
and@ResponseBody
, returning data (usually JSON or XML) directly in the response body.
Q23. What is the role of @RequestMapping
, @GetMapping
, and @PostMapping
?
Answer: All are used to map HTTP requests to controller methods.
@RequestMapping
can handle all HTTP methods.@GetMapping
,@PostMapping
, etc. are specialized versions for specific HTTP verbs.
Q24. How do you handle form data or path variables in Spring Boot?
Answer:
- Use
@RequestParam
for form/query parameters. - Use
@PathVariable
for dynamic path elements.
Example:
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) { ... }
Q25. What is the use of @ResponseBody
?
Answer: @ResponseBody
tells Spring to write the return value of the method directly to the HTTP response body instead of rendering a view.
Q26. How do you handle exceptions globally in Spring Boot?
Answer: Use @ControllerAdvice
with @ExceptionHandler
.
Example:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<String> handleNotFound(UserNotFoundException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
}
}
Q27. How do you enable Cross-Origin Resource Sharing (CORS)?
Answer: At the method level:
@CrossOrigin(origins = "http://localhost:3000")
@GetMapping("/data")
public List<Data> getData() { ... }
Globally:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
};
}
Q28. What is @ModelAttribute
used for?
Answer: It binds form data to model objects in MVC apps. Commonly used with form submissions in Thymeleaf or JSP-based views.
Q29. How do you return a custom HTTP status in a response?
Answer: You can use ResponseEntity
:
return new ResponseEntity<>(user, HttpStatus.CREATED);
Q30. What is the default JSON parser used in Spring Boot?
Answer: Spring Boot uses Jackson as the default JSON parser for serializing and deserializing objects.
Data Handling: JPA, Databases & Repositories (Questions 31–40)
This section focuses on integrating Spring Boot with databases using Spring Data JPA, repositories, and entity mapping.
Q31. What is Spring Data JPA?
Answer: Spring Data JPA is a part of the Spring Data family that simplifies database interactions using the Java Persistence API (JPA). It provides repository interfaces to perform CRUD operations without writing SQL.
Q32. What is the difference between CrudRepository
, JpaRepository
, and PagingAndSortingRepository
?
Interface | Description |
---|---|
CrudRepository | Basic CRUD operations |
PagingAndSortingRepository | Adds pagination and sorting |
JpaRepository | Full JPA functionality + batch, flush, etc. |
Q33. How do you define a JPA entity in Spring Boot?
Answer: Use annotations like @Entity
, @Id
, and @GeneratedValue
.
Example:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
Q34. What is the use of @Repository
annotation?
Answer: @Repository
is a specialization of @Component
that marks a class as a data access layer component. It also enables automatic exception translation to Spring’s DataAccessException
.
Q35. How do you configure a database connection in Spring Boot?
Answer: Use application.properties
or application.yml
:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=pass
spring.jpa.hibernate.ddl-auto=update
Q36. What does spring.jpa.hibernate.ddl-auto=update
mean?
Answer:
It auto-generates or updates the database schema. Common options:
none
: No changeupdate
: Modifies schema if neededcreate
: Creates schema every timecreate-drop
: Drops schema at shutdownvalidate
: Verifies schema matches entity classes
Q37. How do you perform a custom query in Spring Data JPA?
Answer: Use @Query
:
@Query("SELECT u FROM User u WHERE u.name = ?1")
List<User> findByName(String name);
Q38. What is the use of @Transactional
in Spring Boot?
Answer:
It manages transaction boundaries. If a method marked @Transactional
fails, the changes are rolled back automatically.
Q39. How do you paginate results using Spring Data JPA?
Answer: Use Pageable
with JpaRepository
:
Page<User> findAll(Pageable pageable);
Q40. How do you handle relationships like OneToMany and ManyToOne in JPA?
Answer: Use annotations like:
@OneToMany(mappedBy = "user")
private List<Order> orders;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
Advanced Concepts: Actuator, Security & Microservices (Questions 41–50)
This section focuses on advanced Spring Boot features like health monitoring, security, and building microservices using Spring Cloud.
Q41. What is Spring Boot Actuator?
Answer: Spring Boot Actuator provides production-ready endpoints to monitor and manage the application.
Examples: /actuator/health
, /actuator/metrics
, /actuator/env
To enable it:
management.endpoints.web.exposure.include=*
Q42. How do you secure endpoints in Spring Boot?
Answer: Use Spring Security along with role-based access controls.
Example:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and().formLogin();
}
}
Q43. What is BCryptPasswordEncoder
?
Answer: It is a password-hashing algorithm used to securely store passwords in Spring Security.
Usage:
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String hashed = encoder.encode("password123");
Q44. What are profiles in Spring Boot?
Answer: Profiles allow you to define separate configurations for different environments (dev, test, prod).
Use:
spring.profiles.active=dev
And define:
application-dev.properties
application-prod.properties
Q45. What is a microservice in Spring Boot?
Answer: A microservice is a small, independently deployable service that performs a specific function. Spring Boot makes building microservices easy due to its embedded server, minimal configuration, and Spring Cloud support.
Q46. What is Spring Cloud?
Answer: Spring Cloud builds on top of Spring Boot to develop distributed systems. It provides features like configuration management, service discovery, load balancing, and circuit breakers.
Q47. What is Eureka in Spring Cloud?
Answer: Eureka is a service registry that enables microservices to discover each other.
- Services register themselves with Eureka
- Other services use Eureka to locate them
Q48. What is Feign in Spring Cloud?
Answer: Feign is a declarative REST client. It simplifies calling other microservices.
Example:
@FeignClient(name = "user-service")
public interface UserClient {
@GetMapping("/users/{id}")
User getUserById(@PathVariable("id") Long id);
}
Q49. What is Zuul or Spring Cloud Gateway?
Answer: Zuul (deprecated) and Spring Cloud Gateway are API gateways used to route requests, perform filtering, and manage cross-cutting concerns like authentication and rate limiting.
Q50. What is a circuit breaker in microservices?
Answer: It prevents cascading failures by stopping calls to a failing service temporarily.
Spring Boot supports this using Resilience4j or Hystrix (now deprecated).
Core Concepts to Revise before Spring Boot Interview
Here is a list of core concepts to revise before appearing for a Spring Boot interview. These are categorized by topic to help you focus your revision efficiently:
1. Spring Boot Fundamentals
- What is Spring Boot and how it differs from Spring Framework
@SpringBootApplication
and its internal annotations- Auto-configuration and how it works
- Spring Boot starters and dependency management
- Embedded servers (Tomcat, Jetty, Undertow)
2. Configuration and Properties
application.properties
vsapplication.yml
- Property resolution order
@Value
vs@ConfigurationProperties
- Externalized configuration
- Profiles (
spring.profiles.active
) and environment-specific config
3. Dependency Injection & Annotations
- Component scanning (
@ComponentScan
) - Bean lifecycle and scopes
- Key annotations:
@Component
,@Service
,@Repository
,@Controller
,@RestController
@Autowired
, constructor injection, and field injection@Bean
and@Configuration
4. Spring MVC and REST APIs
@RestController
vs@Controller
@RequestMapping
,@GetMapping
,@PostMapping
, etc.@PathVariable
vs@RequestParam
- Exception handling (
@ControllerAdvice
,@ExceptionHandler
) - JSON serialization with Jackson
- CORS configuration
5. Spring Data JPA and Database Integration
@Entity
,@Id
,@GeneratedValue
, and relationships (@OneToMany
,@ManyToOne
)- Repositories:
CrudRepository
,JpaRepository
,PagingAndSortingRepository
- Custom queries with
@Query
- Transaction management (
@Transactional
) - Database configuration via
application.properties
- Schema generation (
spring.jpa.hibernate.ddl-auto
)
6. Spring Boot Actuato
- Purpose and endpoints (
/actuator/health
,/metrics
, etc.) - Enabling and customizing actuator endpoints
- Securing actuator endpoints
7. Spring Security (Basics)
- Configuring basic authentication and authorization
WebSecurityConfigurerAdapter
andHttpSecurity
- Role-based access control
- Password encoding with
BCryptPasswordEncoder
8. Spring Boot Microservices Concepts
- What is a microservice?
- Service discovery with Eureka
- REST communication using Feign clients
- API Gateway (Spring Cloud Gateway)
- Circuit breaker pattern with Resilience4j
- Centralized configuration (Spring Cloud Config)
9. Testing in Spring Boot
- Writing unit tests with JUnit and Mockito
@SpringBootTest
,@WebMvcTest
,@DataJpaTest
- Mocking service layers
- Testing REST endpoints
Conclusion
Spring Boot has become the backbone of modern Java backend development, especially for building microservices and enterprise-grade applications. This curated list of Top 50 Spring Boot Interview Questions and Answers is designed to help you revise key concepts, understand real-world usage, and prepare confidently for interviews.
Whether you are a fresher starting your journey or an experienced developer brushing up for a role switch, mastering these topics will give you a strong foundation. Remember, along with theoretical knowledge, hands-on practice and clear explanations are what make a candidate stand out.