Skip to content

Level 1 · Entry Foundations

Goal: understand what the Spring container does with your classes, and build a clean, validated JSON API on top of it. By the end of this level you will have a task-tracker REST API with typed configuration, consistent application/problem+json error responses, structured logs, and controller tests.

This level is deliberately about the core, not the database. Persistence arrives in Level 2; keeping storage in memory here means every behavior you see comes from Spring MVC and the container, not from Hibernate.

Modules

  1. What Spring and Spring Boot Actually Are — the framework, the container, and what Boot adds on top
  2. Spring Initializr & Project Structure — starters, the parent POM, the Maven wrapper, and the executable jar
  3. Dependency Injection & the IoC Container — constructor injection, interfaces, and how the container resolves a graph
  4. Beans, Scopes & Component Scanning — stereotypes, @Bean methods, scopes, and qualifiers
  5. Configuration: application.yml, Profiles & @ConfigurationProperties — property sources, precedence, profiles, and validated config records
  6. Building REST Controllers — @RestController, mappings, status codes, and ResponseEntity
  7. Request Binding, Responses & Validation — path/query/body binding, Jackson, and Jakarta Bean Validation
  8. Exception Handling with @ControllerAdvice & ProblemDetail — RFC 9457 error bodies and one place for error policy
  9. Logging with SLF4J & Logback — levels, parameterized messages, MDC, and structured JSON logs
  10. Project — A Task Tracker REST API — everything above in one small, tested service

What you need before starting

  • Solid Java: classes and interfaces, generics, lambdas and streams, records, exceptions. The Java Mastery Path covers these.
  • A JDK 17 or newer (21 or 25 recommended). Check with java -version.
  • Basic Maven familiarity is helpful but not required — every project uses the Maven wrapper (./mvnw), so you do not need Maven installed separately.
  • curl (or any HTTP client) to call your endpoints.

An IDE with Spring support (IntelliJ IDEA, or VS Code with the Spring Boot extension pack) makes navigating beans and properties much easier, but everything here also works from a terminal.