All Articles
All 138 Spring Boot articles, newest first. Browse fundamentals, implementation guides, and troubleshooting in one place.
2026
- How to Tune Embedded Tomcat Thread Count in Spring Boot - Deciding server.tomcat.threads.max, max-connections, and accept-count
- How to Connect Spring Boot to MySQL - application.yml Configuration, JDBC URL Parameters, and Time Zone/Character Encoding Pitfalls
- How to Implement Pagination with Spring Boot + MyBatis - Choosing Between PageHelper, RowBounds, and Hand-Written LIMIT/OFFSET
- Mastering Mockito in Spring Boot Service Layer Tests - when, verify, ArgumentCaptor, and doThrow in Practice
- How to Validate List<DTO>, @RequestParam, and @PathVariable in Spring Boot - Why @Valid Doesn't Work and How to Handle the 3 Exceptions
- Spring Boot Validation Annotations Cheat Sheet - From the Differences Between @NotNull/@NotEmpty/@NotBlank to Custom Messages
- Which Spring Boot Authentication Method Should You Choose? Comparing Session, JWT, OAuth2, and API Key with a Selection Flowchart
- Spring Boot Test Annotations Cheat Sheet - How to Choose Between @SpringBootTest, @WebMvcTest, and @DataJpaTest
- Why @Transactional, @Cacheable, and @Async Don't Work in Spring Boot - Understanding AOP Proxies and Self-Invocation to Fix It
- How to Use the @Query Annotation in Spring Boot + Spring Data JPA - From JPQL and Native SQL to Update Queries with @Modifying
- How to Implement Session Management with Spring Session + Redis in Spring Boot - Sharing Sessions Across Multiple Instances
- Differences Between @Service, @Repository, and @Controller in Spring Boot and How to Use Them - From Their Relationship with @Component to Exception Translation
- How to Use Quartz Scheduler in Spring Boot - Persistent Jobs, Cron, and Dynamic Scheduling (When to Use It vs. @Scheduled)
- How to Speed Up Bulk INSERTs with Spring Data JPA - hibernate.jdbc.batch_size and Batching saveAll
- Implementing Database Authentication with Spring Security - Persisting Users with UserDetailsService and JdbcUserDetailsManager
- How to Use MyBatis with Spring Boot - An Implementation Guide to Mapper Definitions, Dynamic SQL, and Result Mapping
- How to Persist enums to a Database with Spring Boot + JPA - Choosing Between @Enumerated(EnumType.STRING) and AttributeConverter
- How to Implement gRPC Services and Clients in Spring Boot - Protocol Buffers and grpc-spring-boot Support
- @MockBean Deprecated in Spring Boot 3.4 - Migrating to @MockitoBean and @MockitoSpyBean and How to Use Them
- How to Automatically Record Change History (Audit Logs) with Spring Boot + Hibernate Envers
- How to Build an API Gateway with Spring Cloud Gateway - Routing, Filters, and Rate Limiting
- How to Export and Import CSV in Spring Boot - Handling Character Encoding, Large Datasets, and Validation with OpenCSV
- How to Create Your Own Custom Starter in Spring Boot - AutoConfiguration and Metadata Setup
- How to Fix LazyInitializationException in Spring Boot + JPA - Causes and Solutions for "could not initialize proxy - no Session"
- How to Create Custom Health Checks (HealthIndicator) and Custom Actuator Endpoints in Spring Boot
- How to Receive Request Parameters in Spring Boot - Choosing Between @RequestParam, @PathVariable, @RequestBody, and @ModelAttribute
- How to Retrieve DTOs Directly with Spring Data JPA Projections - Choosing Between Interface-Based and Class-Based Projections
- How to Run Startup Logic with CommandLineRunner and ApplicationRunner in Spring Boot
- How to Execute Raw SQL with Spring Boot's JdbcTemplate - Using queryForObject, RowMapper, and Batch Updates
- How to Implement Pessimistic Locking (@Lock) with Spring Boot + JPA - PESSIMISTIC_WRITE and Deadlock Prevention
- How to Load Initial Data with data.sql and schema.sql in Spring Boot - When to Use Flyway/Liquibase Instead
- How to Work with Multiple DataSources in Spring Boot - Read/Write Separation and AbstractRoutingDataSource
- Implementing a Synchronous HTTP Client with RestClient in Spring Boot 3.2 - Migrating from RestTemplate/WebClient
- Spring Boot Package Structure Best Practices - Choosing Between Layered and Feature-Based Approaches
- Implementing Retry Processing with @Retryable in Spring Boot
- Building a Declarative HTTP Client with Spring Boot's HTTP Interface (@HttpExchange)
- How to Export and Read Excel Files in Spring Boot - Implementing Reports and Data Import with Apache POI
- How to Write Repository Layer Slice Tests with @DataJpaTest in Spring Boot - Choosing Between H2 and Testcontainers
- Thorough Comparison of Spring Boot's 3 Dependency Injection Methods - When to Use Constructor, Setter, and Field Injection
- How to Dynamically Generate PDFs in Spring Boot - Report Output with OpenPDF and Thymeleaf
- How to Reduce Boilerplate Code with Lombok in Spring Boot
- Spring Boot Application Won't Start? How to Isolate the Cause and Fix It
- Spring REST Docs vs Springdoc OpenAPI: Differences and How to Choose
- How to Achieve a Modular Monolith with Spring Modulith
- How to Write Integration Tests with PostgreSQL, Kafka, and Redis Using Spring Boot Testcontainers
- Understanding Spring Boot Bean Scopes - When to Use singleton, prototype, request, and session
- Customizing JSON Serialization with Jackson in Spring Boot - A Guide to Date Formatting, Null Exclusion, and snake_case
- Implementing the Transactional Outbox Pattern in Spring Boot
- How to Implement Multi-Tenancy in Spring Boot
- Implementing Spring Boot's GlobalExceptionHandler for Production Use
- Database Migration Management with Liquibase in Spring Boot
- How to Implement Distributed Transactions in Microservices with the Saga Pattern in Spring Boot
- How to Implement Soft Delete with Spring Boot + JPA - Choosing Between @SQLDelete, @SQLRestriction, and Filters
- How to Prevent Duplicate @Scheduled Execution in Distributed Environments with Spring Boot and ShedLock
- How to Implement Server-Sent Events (SSE) in Spring Boot - SseEmitter / WebFlux Implementation Guide
- How to Implement JWT Refresh Tokens with Spring Security
- How to Implement Idempotency (Idempotency-Key) in a Spring Boot REST API - Preventing Double Charges and Double-Clicks
- How to Speed Up Spring Boot Application Startup - Reducing Time with CDS, AOT, and Lazy Initialization
- How to Implement Optimistic Locking (@Version) with JPA in Spring Boot to Prevent Concurrent Update Conflicts
- How to Implement Type-Safe Dynamic Queries with QueryDSL in Spring Boot