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 themain()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:
- @Controllerreturns views (HTML, JSP)
- @RestControlleris a combination of- @Controller + @ResponseBodythat 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;


