Setting the file. One moment.
Skill 114 · Create Spring Boot Java Project
Subchapter 114.7
references/spring-boot-4.mdMarkdown2 KBView on GitHub
Detect the project’s Spring Boot major first (see versions.md); apply only the section that matches. Verify against the .
| Boot 3.x | Boot 4.x | |
|---|---|---|
| Spring Framework | 6.x | 7.x |
| Java | 17+ | 17+ (25 recommended) |
| Jakarta EE | 10 | 11 |
| Jackson | 2 (com.fasterxml.jackson.databind) | 3 (tools.jackson.databind) |
| Testcontainers | 1.x | 2.x |
spring-boot-starter-webmvc (not -web), and each technology has a matching test starter (spring-boot-starter-webmvc-test, spring-boot-starter-data-jpa-test…). Generate with start.spring.io rather than guessing artifact names.tools.jackson.databind.ObjectMapper); annotations stay in com.fasterxml.jackson.annotation.@WebMvcTest is now org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest. @MockitoBean / @MockitoSpyBean replace @MockBean / @SpyBean (deprecated since 3.4 and removed in Boot 4; use the new ones everywhere Boot 3.4+ allows). See the spring-boot-testing skill.testcontainers-postgresql, testcontainers-junit-jupiter) and classes moved (org.testcontainers.postgresql.PostgreSQLContainer). With Boot 3 keep the 1.x names.process-aot cannot find the main class, set <start-class> (Maven property) to the fully qualified @SpringBootApplication class.TestcontainersConfiguration public if tests live in sub-packages.Stay on Boot 3 when the project is on Boot 3 (start.spring.io cannot generate new 3.x projects, see versions.md): use spring-boot-starter-web, org.testcontainers.containers.PostgreSQLContainer (Testcontainers 1.x), @MockBean, Jackson 2. Do not migrate unless asked; Boot 3.5 → 4.0 is a separate, deliberate upgrade.