Top 10 Java Spring boot interview question with answers for experienced 2025

Checklist of top Spring Boot interview questions with code snippets and answers for experienced Java developers in 2025.

Q1: What is Spring Boot and how is it different from Spring Framework?

Answer: Spring Boot is an extension of the Spring Framework that simplifies the development of production-ready applications with minimal configuration. Unlike the traditional Spring Framework, Spring Boot offers:

  • Auto-configuration
  • Embedded servers (Tomcat, Jetty, Undertow)
  • Spring Boot Starters
  • Production-ready features (Monitoring, health checks)

Q2: What are the key features of Spring Boot?

Answer:

  • Auto-configuration
  • Spring Boot Starters
  • Embedded web servers
  • Production-ready monitoring (Actuator)
  • Externalized Configuration
  • Spring Boot Initializr

Q3: What is @SpringBootApplication annotation?

Answer: It is a meta-annotation that combines:

  • @Configuration (for Spring configurations)
  • @EnableAutoConfiguration (for auto-configuration)
  • @ComponentScan (for scanning components in the package)

Q4: How do you start a Spring Boot application?

Answer:

  • Using SpringApplication.run() method in the main() method:
    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    
  • Using Spring Boot CLI

Q5: What is Spring Boot Initializr?

Answer: Spring Boot Initializr (https://start.spring.io/) is an online tool to create Spring Boot projects by selecting dependencies and generating a pre-configured project.

2. Spring Boot Configuration & Properties

Q6: What is application.properties or application.yml file?

Answer: A configuration file used to define properties such as:

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb

OR using YAML format:

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb

Q7: How to use custom properties in Spring Boot?

Answer: Define custom properties in application.properties:

app.title=My Application

Access them using @Value:

@Value("${app.title}")
private String appTitle;

OR using @ConfigurationProperties:

@ConfigurationProperties(prefix = "app")
public class AppProperties {
    private String title;
}

3. Spring Boot REST APIs

Q8: How to create a RESTful API in Spring Boot?

Answer:

@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

Q9: What is the difference between @Controller and @RestController?

Answer:

  • @Controller returns views (HTML, JSP)
  • @RestController is a combination of @Controller + @ResponseBody that returns JSON/XML responses

Q10: How to handle exceptions in Spring Boot?

Answer: Using @ControllerAdvice:

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<String> handleNotFound(ResourceNotFoundException ex) {
        return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
    }
}

4. Spring Boot Security

Q11: How to secure a Spring Boot application?

Answer:

  • Use spring-boot-starter-security
  • Define security configurations using SecurityFilterChain
  • Implement JWT authentication

Q12: How to implement JWT authentication?

Answer:

public String generateToken(String username) {
    return Jwts.builder()
            .setSubject(username)
            .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60))
            .signWith(SignatureAlgorithm.HS512, "secret-key")
            .compact();
}

5. Spring Boot Microservices

Q13: What is Spring Cloud Netflix Eureka?

Answer: Eureka is a service registry used for microservice discovery.

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

Q14: How to use Feign Client for inter-service communication?

Answer:

@FeignClient(name = "user-service")
public interface UserClient {
    @GetMapping("/users/{id}")
    User getUserById(@PathVariable Long id);
}

6. Spring Boot Performance & Best Practices

Q15: How to improve Spring Boot performance?

Answer:

  • Enable caching (EhCache, Redis)
  • Use database connection pooling
  • Optimize database queries
  • Use asynchronous processing (@Async)
  • Enable lazy initialization (spring.main.lazy-initialization=true)

Q16: How to enable logging in Spring Boot?

Answer:

logging.level.root=INFO
logging.level.org.springframework=DEBUG

7. Spring Boot Testing

Q17: What is @SpringBootTest used for?

Answer: It loads the application context for integration testing.

@SpringBootTest
public class MyApplicationTests {
    @Test
    public void contextLoads() {
    }
}

Q18: How do you mock dependencies in Spring Boot tests?

Answer: Using Mockito:

@MockBean
private UserService userService;