Top 10 Java Spring boot interview question with answers for experienced 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;