<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Learn Spring Boot 4</title><link>https://learn-spring-boot-4.pages.dev/index.html</link><description>A two-day course on Spring Boot 4, built on Spring Framework 7. No Spring experience needed. Java basics are assumed — see Learn Java 25 if you need them first.
Everything here runs with a JDK and the Maven wrapper — no application server, no XML.
Why Spring Boot 4? Spring Boot 4.0 (November 2025) sits on Spring Framework 7: a fully modularized code base, null safety with JSpecify, API versioning, declarative HTTP service clients and first-class Java 25 support — while keeping Java 17 as the baseline.</description><generator>Hugo</generator><language>en</language><atom:link href="https://learn-spring-boot-4.pages.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Course Introduction</title><link>https://learn-spring-boot-4.pages.dev/01-introduction/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://learn-spring-boot-4.pages.dev/01-introduction/index.html</guid><description>Get a JDK and a generated project running, then meet the parts every Spring Boot app is made of.</description></item><item><title>Day 1: Spring Boot Basics</title><link>https://learn-spring-boot-4.pages.dev/02-spring-boot-basics/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://learn-spring-boot-4.pages.dev/02-spring-boot-basics/index.html</guid><description>The core ideas: beans, configuration, REST controllers, validation, database access, calling other services and testing all of it.</description></item><item><title>Day 2: Intermediate Spring</title><link>https://learn-spring-boot-4.pages.dev/03-intermediate-spring/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://learn-spring-boot-4.pages.dev/03-intermediate-spring/index.html</guid><description>Versioned APIs, null safety, security, observability, resilience, concurrency and deployment.</description></item><item><title>Spring Boot 4 Cheat Sheet</title><link>https://learn-spring-boot-4.pages.dev/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://learn-spring-boot-4.pages.dev/cheatsheet/index.html</guid><description>Commands ./mvnw spring-boot:run ./mvnw test ./mvnw package ./mvnw spring-boot:run -Dspring-boot.run.profiles=dev ./mvnw spring-boot:build-image ./mvnw dependency:tree java -jar target/app.jar --server.port=9000 --spring.profiles.active=prod Application class @SpringBootApplication @ImportHttpServices(group = "books", basePackages = "com.example.clients") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } Stereotypes and wiring @Component @Service @Repository @RestController @Configuration @Bean @Primary @Qualifier("name") @Scope("prototype") @PostConstruct @PreDestroy @Profile("!prod") @ConditionalOnProperty @ConditionalOnMissingBean @Service class S { private final Repo repo; S(Repo repo) { this.repo = repo; } } // constructor injection Web @RestController @RequestMapping("/api/books") @GetMapping @PostMapping @PutMapping @PatchMapping @DeleteMapping @PathVariable @RequestParam @RequestBody @RequestHeader @CookieValue @ResponseStatus(HttpStatus.CREATED) @CrossOrigin @GetMapping(version = "1.2+") ResponseEntity.ok(b) .created(uri).body(b) .noContent().build() .notFound().build() Status When 200 / 201 / 204 ok / created / no content 400 / 401 / 403 / 404 / 409 invalid / unauthenticated / forbidden / missing / conflict 500 unhandled Validation &amp; errors @Valid @RequestBody Req r @NotNull @NotBlank @Size(max=100) @Min @Max @Email @Pattern @Past @Future @RestControllerAdvice @ExceptionHandler(X.class) ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, "…") Configuration server.port=8080 spring.application.name=demo spring.profiles.active=dev logging.level.com.example=DEBUG logging.console.enabled=true spring.threads.virtual.enabled=true spring.jpa.hibernate.ddl-auto=validate management.endpoints.web.exposure.include=health,info,metrics management.endpoint.health.probes.enabled=true server.shutdown=graceful @Value("${app.key:default}") String key; @ConfigurationProperties("app.mail") record MailProperties(String from, String host, int port) {} Precedence: command line → environment → application-{profile} → application → code.</description></item><item><title>Further Resources</title><link>https://learn-spring-boot-4.pages.dev/resources/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://learn-spring-boot-4.pages.dev/resources/index.html</guid><description>Official Spring Boot reference — the manual, worth skimming end to end once Spring Boot 4.0 release notes — every change, with migration notes Spring Framework reference — the container, MVC, transactions Guides — short, task-shaped tutorials start.spring.io — project generator spring.io/blog — release announcements and deep dives What is new in Spring Boot 4 Topic Where Modularization, JSpecify null safety, Java 25 Spring Boot 4.0 announcement API versioning Framework 7 GA HTTP service clients Spring Boot reference: REST clients @Retryable, @ConcurrencyLimit Framework reference: resilience RestTestClient, @MockitoBean Spring Boot reference: testing Ecosystem Spring Data JPA — repositories, derived queries Spring Security — dense, but the only reliable source Micrometer — metrics and tracing Testcontainers — real databases in tests Flyway — schema migrations JSpecify — the null-safety annotations Tools Eclipse Temurin — JDK builds SDKMAN! — manage several JDKs MVN Repository — find library coordinates HTTPie / curl — talk to your endpoints Spring Boot Migrator / OpenRewrite — automated upgrades Practice Rebuild the course project without looking: entity, repository, service, controller, tests Put a real API behind an @HttpExchange interface Take an existing Spring Boot 3 app and upgrade it to Spring Boot 4 Deploy something small — a container plus a health probe teaches more than a chapter Books Spring Start Here (Laurentiu Spilca) — gentle, container-first Spring in Action (Craig Walls) — broad tour of the ecosystem Spring Boot: Up and Running (Mark Heckler) — practical, production-minded Effective Java (Joshua Bloch) — not Spring, but it makes your Spring code better Community Stack Overflow — check the date on every answer GitHub issues — the maintainers answer here Devoxx, Spring I/O and SpringOne talks are on YouTube Tip Check the version of anything you read. A lot of “how to do it in Spring” describes XML configuration or Spring Boot 1 — if a snippet has applicationContext.xml in it, keep scrolling.</description></item></channel></rss>