Junior
juniorIoC, REST, JPA basics, first Boot app, common annotations.
Spring Core · companion to Java Core & Service Core
Not just how to annotate a controller—how the container wires beans, how auto-configuration decides what runs, why your @Transactional sometimes silently fails, and what actually happens when SpringApplication.run() starts Tomcat on port 8080.
Spring is not one framework—it is a composable ecosystem built on a single idea: inversion of control with a mature container that wires dependencies, applies cross-cutting concerns via AOP, and integrates every datastore, message broker, and security provider teams already run in production.
Objects don't construct their dependencies—the container injects them. Testability, modularity, and consistent lifecycle management follow.
Spring Boot auto-configures Tomcat, Jackson, JPA, and Actuator from classpath signals—ship a JAR, not a 200-line XML deployment descriptor.
JDBC, JPA, Kafka, Redis, OAuth2, Batch, WebFlux—one programming model, one transaction abstraction, one security filter chain.
Banks, insurers, and SaaS backends standardize on Spring Boot 3 + Java 17/21. Job postings, libraries, and hiring pools assume it.
Boot is not a replacement for the Framework—it is opinionated auto-configuration and production-ready defaults on top of the same core container.
| Layer | Spring Framework | Spring Boot adds |
|---|---|---|
| Core | IoC, DI, AOP, events, SpEL, validation | Auto-configured beans via @EnableAutoConfiguration |
| Web | Spring MVC, WebFlux, REST, filters | Embedded Tomcat/Jetty/Undertow, error pages, static resources |
| Data | JdbcTemplate, ORM integration, transactions | DataSource auto-config, Flyway/Liquibase hooks, HikariCP defaults |
| Ops | Manual wiring of metrics, health | Actuator, Micrometer, graceful shutdown, config binding |
| Deploy | WAR to external servlet container | Executable fat JAR, cloud-native 12-factor defaults |
@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan. Boot still uses the same ApplicationContext refresh—you just skip writing 40 configuration classes by hand.
Projects you will encounter in production codebases—this guide focuses on the bolded core path first.
Boot tracks Spring Framework releases. Production baselines today: Boot 3.2+ on Java 17 minimum, Java 21 for virtual threads.
Executable JAR revolution. spring.factories auto-config. Spring 4 baseline.
Spring 5, Java 8+, reactive WebFlux support, Actuator overhaul, Micrometer metrics.
Last 2.x open-source support. Still common in legacy estates migrating to Jakarta.
Spring 6, javax.* → jakarta.*, Java 17 baseline, native observability with Micrometer Tracing, Security 6 lambda DSL.
Java 21 virtual thread support for Tomcat and @Async. AutoConfiguration.imports replaces spring.factories for auto-config.
New guides default to Spring Boot 3.x / Spring Framework 6 with Jakarta APIs. Boot 2.x callouts appear where migration matters (WebSecurityConfigurerAdapter, Sleuth vs Micrometer Tracing).
Use start.spring.io: Maven, Java 21, Spring Boot 3.2+, dependency Spring Web. Ten lines to a running API.
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@RestController
class HelloController {
@GetMapping("/api/hello")
public Map<String, String> hello() {
return Map.of("message", "Hello, Spring Core!");
}
}
Run: ./mvnw spring-boot:run → curl localhost:8080/api/hello
Add Spring Boot DevTools in dev for automatic restart on classpath change—never include in production dependencies.
What happens between main and "Started DemoApplication in 2.3 seconds". Full deep dive in Boot Internals.
sequenceDiagram participant Main as main method participant SA as SpringApplication participant Ctx as ApplicationContext participant Tom as Embedded Tomcat Main->>SA: run DemoApplication.class SA->>SA: prepare Environment and profiles SA->>Ctx: refresh context Ctx->>Ctx: register beans and auto-config Ctx->>Tom: start web server SA->>SA: ApplicationReadyEvent
Fourteen deep-dive chapters plus cheat sheets. Path: IoC & DI → Boot internals → Web MVC → Data & Security, then advanced topics.
Learning path: IoC & DI · Boot Internals · Web MVC · Spring Data · Security
IoC, REST, JPA basics, first Boot app, common annotations.
Security, transactions, testing slices, caching, async, Boot config.
Container internals, AOP proxies, production tuning, WebFlux trade-offs.
BeanFactory, scopes, lifecycle, circular deps, profiles.
Auto-config, startup events, properties, Actuator.
DispatcherServlet, REST, validation, exception handling.
Repositories, mappings, N+1, transactions, auditing.
Filter chain, JWT, OAuth2, method security.
JDK vs CGLIB, pointcuts, self-invocation trap.
@Async, @Scheduled, application events.
@Cacheable, Caffeine, Redis, eviction.
Test slices, MockMvc, Testcontainers, WireMock.
Mono, Flux, WebClient, virtual threads comparison.
Jobs, steps, chunk processing, retry/skip.
Micrometer, tracing, structured logs, health probes.
Junior, mid, and senior quick references.
Be ready to explain the difference between IoC (container controls object creation) and DI (dependencies supplied from outside)—and why constructor injection is preferred over field injection.