Series · Day 100 of 100
Java, Spring Framework & Spring Boot
- 01Why Java still wins for backend teams: a practical guideJava is not legacy. It is a fast, stable runtime with the deepest backend ecosystem around.Oct 27, 2026
6 min - 02Setting up a modern Java project: lessons from productionJDK 21, a build tool and sensible defaults — the starting point for every service in this series.Oct 27, 2026
6 min - 03Java records: data classes without boilerplate explainedRecords replace hundreds of lines of getters, equals and hashCode with one declaration.Oct 27, 2026
8 min - 04Modern Java syntax you should be using, explained simplyvar, text blocks and switch expressions make everyday Java shorter and clearer.Oct 27, 2026
7 min - 05Java collections: choosing List, Set and Map in practiceThe right collection makes code faster and intent obvious.Oct 27, 2026
8 min - 06Java streams examples you will reuse daily: a deep divemap, filter and collect — the stream recipes that replace most loops.Oct 27, 2026
8 min - 07Collectors.groupingBy recipes: best practices explainedGrouping, counting and summing in one line — the most useful collector.Oct 27, 2026
6 min - 08Java Optional done right: a hands-on guide for engineersOptional is a return type for maybe-missing values, not a replacement for null everywhere.Oct 27, 2026
7 min - 09Sealed classes and pattern matching in Java & Spring BootModel closed sets of types and let the compiler check you handled every case.Oct 27, 2026
8 min - 10Checked vs unchecked exceptions in Java, explained simplyWhen to force callers to handle errors, and when to let them bubble.Oct 27, 2026
7 min - 11equals and hashCode: the contract — a step-by-step guideBreak it and HashMaps silently lose your objects.Oct 27, 2026
9 min - 12Immutability in Java: a practical Java & Spring Boot guideImmutable objects are thread-safe, cache-friendly and easier to reason about.Oct 27, 2026
8 min - 13Java generics and wildcards: PECS — a step-by-step guideProducer extends, consumer super — the rule that makes generic APIs flexible.Oct 27, 2026
9 min - 14Virtual threads in Java 21: patterns, pitfalls and fixesThread-per-request without the thread cost — blocking code that scales.Oct 27, 2026
8 min - 15CompletableFuture basics: a hands-on guide for engineersRun independent calls in parallel and combine the results.Oct 27, 2026
7 min - 16JVM memory explained: heap, stack and metaspace explainedKnow where your objects live before you tune anything.Oct 27, 2026
8 min - 17G1 vs ZGC: choosing a garbage collector, explained simplyThe default is good. Know when to switch.Oct 27, 2026
7 min - 18Reading a Java thread dump: patterns, pitfalls and fixesWhen a service hangs, a thread dump tells you exactly why.Oct 27, 2026
6 min - 19Java interview questions: strings and memory in practiceClassic questions that still show up — with answers that show depth.Oct 27, 2026
7 min - 20Java features worth learning in 2026: a practical guideSkip the trivia. These features change how you write backend code.Oct 27, 2026
8 min - 21Spring vs Spring Boot: what is the difference explainedSpring is the framework. Spring Boot is the opinionated way to run it.Oct 27, 2026
6 min - 22Spring Boot tutorial: your first REST API for productionA clean CRUD endpoint with the patterns you will use for every feature.Oct 27, 2026
8 min - 23Structure Spring Boot projects by feature for productionPackage by feature, not by layer, and your codebase stays navigable.Oct 27, 2026
8 min - 24Dependency injection in Spring Boot in Java & Spring BootConstructor injection, beans and why field injection makes tests painful.Oct 27, 2026
7 min - 25Spring bean scopes explained: what developers should knowSingleton is the default — and usually what you want.Oct 27, 2026
5 min - 26Spring Boot configuration and profiles, explained simplyapplication.yml, profiles and environment variables — without secrets in git.Oct 27, 2026
6 min - 27@ConfigurationProperties for typed config for productionStop sprinkling @Value strings across your code.Oct 27, 2026
5 min - 28Spring Boot validation with Bean Validation: a deep diveReject bad input at the edge with clear error messages.Oct 27, 2026
9 min - 29Global error handling with @RestControllerAdvice explainedOne consistent error format for every endpoint using ProblemDetail.Oct 27, 2026
6 min - 30ResponseEntity and HTTP status codes: a practical guideReturn the status your clients expect.Oct 27, 2026
6 min - 31DTOs vs JPA entities: a practical Java & Spring Boot guideNever return entities from your API.Oct 27, 2026
6 min - 32Mapping DTOs with MapStruct: what developers should knowCompile-time mapping that is fast, type-safe and boring in the best way.Oct 27, 2026
8 min - 33Logging in Spring Boot with SLF4J in Java & Spring BootGood logs answer questions during incidents.Oct 27, 2026
6 min - 34Spring Boot Actuator: health and metrics for productionProduction readiness in one dependency.Oct 27, 2026
7 min - 35Faster feedback with Spring Boot DevTools for productionRestart in a second instead of rebuilding.Oct 27, 2026
6 min - 36OpenAPI docs with springdoc: what developers should knowGenerate accurate API docs from your code.Oct 27, 2026
7 min - 37API versioning strategies in Spring Boot for productionVersion only when you must, and pick one strategy.Oct 27, 2026
7 min - 38Pagination with Spring Data Pageable: a practical guideNever return unbounded lists.Oct 27, 2026
6 min - 39Calling other services: RestClient and WebClient explainedTyped HTTP clients with timeouts, errors and retries.Oct 27, 2026
7 min - 40Retries and timeouts with Resilience4j, explained simplyRemote calls fail. Plan for it.Oct 27, 2026
7 min - 41Spring Data JPA in five minutes: lessons from productionRepositories give you CRUD with almost no code.Oct 27, 2026
7 min - 42JPA entities and relationships: best practices explainedMap relationships so queries stay predictable.Oct 27, 2026
7 min - 43Hibernate N+1 query problem: how to fix it — a deep diveOne query for the list, one per row for its children — the most common JPA performance bug.Oct 27, 2026
8 min - 44Lazy vs eager fetching in JPA: best practices explainedDefault to lazy. Fetch what each use case needs.Oct 27, 2026
7 min - 45Spring Data queries: derived, @Query and projectionsChoose the simplest query style that stays readable.Oct 27, 2026
7 min - 46@Transactional pitfalls in Spring in Java & Spring BootThe annotation that looks simple and bites everyone once.Oct 27, 2026
6 min - 47Optimistic locking with @Version: lessons from productionPrevent lost updates without database locks.Oct 27, 2026
9 min - 48Database migrations with Flyway: lessons from productionYour schema deserves version control.Oct 27, 2026
7 min - 49Tuning HikariCP connection pools: lessons from productionBigger pools are not faster pools.Oct 27, 2026
7 min - 50Dynamic filters with JPA Specifications, explained simplyBuild search endpoints without string-concatenated queries.Oct 27, 2026
7 min
