Java Concurrency and the Memory Model
Visibility, atomicity, and happens-before are three different guarantees, and most concurrency bugs come from confusing them.
Java & Spring for engineers who ship and maintain it — JVM memory and garbage collection, the IoC container and dependency injection, Spring Boot auto-configuration, the Hibernate persistence context and the N+1 problem, @Transactional pitfalls, and the Java memory model. The mechanisms behind the interview questions.
6 articles · updated regularly
Visibility, atomicity, and happens-before are three different guarantees, and most concurrency bugs come from confusing them.
@Transactional is a proxy, not a keyword — and that one fact explains self-invocation, silent commits on checked exceptions, and most production data bugs.
The N+1 problem is a leak in Hibernate's lazy-loading abstraction; understanding the persistence context and entity lifecycle is what lets you fix it deliberately rather than by trial and error.
Auto-configuration is not magic: it is ordinary @Configuration classes loaded from a manifest and switched on or off by conditions you can inspect.
A senior engineer's tour of Spring's IoC container — bean definitions, why constructor injection wins, scopes, and how proxying actually works.
A working model of where JVM objects live, how generational collectors reclaim them, and when GC tuning is the wrong fix.