spring-boot

GraphQL API with Spring Boot

GraphQL provides flexible APIs where clients specify exact data requirements. Spring for GraphQL integrates GraphQL Java with Spring Boot. Schema-first approach defines types in .graphqls files. Resolvers map schema fields to Java methods using @Query

Custom Spring Boot starters

Spring Boot starters provide autoconfiguration for libraries. I create custom starters to standardize configurations across microservices. Starters contain @Configuration classes with @ConditionalOnClass, @ConditionalOnProperty annotations. spring.fac

Messaging with Apache Kafka

Apache Kafka provides distributed messaging for event-driven architectures. Spring Kafka simplifies producer and consumer implementations. KafkaTemplate sends messages to topics. @KafkaListener consumes messages asynchronously. I configure serializers

File upload and download handling

Spring Boot handles multipart file uploads efficiently. MultipartFile represents uploaded files. I validate file types, sizes, and content. Files are stored locally, in cloud storage (S3, Azure Blob), or databases. Streaming large files prevents memor

Database migration with Flyway

Flyway manages database schema evolution through versioned SQL scripts. Migration files follow naming convention—V1__initial_schema.sql, V2__add_users_table.sql. Flyway tracks applied migrations in a schema history table. Migrations run automatically

WebSocket for real-time communication

WebSocket enables full-duplex communication between client and server. Spring WebSocket supports STOMP protocol over WebSocket. I configure message brokers for pub-sub messaging. @MessageMapping handles incoming messages. SimpMessagingTemplate sends m

Exception handling with @ControllerAdvice

Global exception handling in Spring uses @ControllerAdvice to centralize error responses across all controllers. I define @ExceptionHandler methods for specific exceptions, returning consistent error DTOs with HTTP status codes. Custom exceptions exte

Validation with Bean Validation API

Bean Validation (JSR 380) validates objects using annotations. Common constraints include @NotNull, @NotBlank, @Size, @Email, @Min, @Max, and @Pattern. I apply annotations to fields, methods, or parameters. @Valid triggers validation in Spring control

Scheduled tasks with @Scheduled

Spring's @Scheduled annotation enables method execution on fixed intervals or cron expressions. @EnableScheduling activates scheduling infrastructure. Fixed delay waits after completion, fixed rate executes at intervals regardless of duration. Cron ex

Database transactions and isolation levels

Spring's @Transactional manages database transactions declaratively. Transaction propagation controls behavior when methods call other transactional methods—REQUIRED, REQUIRESNEW, NESTED. Isolation levels prevent concurrent access issues—READUNCOMMITT

CORS configuration for cross-origin requests

CORS (Cross-Origin Resource Sharing) controls which domains can access APIs. Browsers enforce same-origin policy by default. I configure allowed origins, methods, headers, and credentials. @CrossOrigin enables CORS per controller or method. Global con

Docker containerization for Spring Boot

Docker packages Spring Boot applications with dependencies into portable containers. Multi-stage builds optimize image size—build stage compiles code, runtime stage contains only necessities. I use official OpenJDK base images. Layered JARs improve ca