Agent Skills: Spring Boot Knowledge Patch

Spring Boot changes since training cutoff (latest: 4.0) — modular starters, Jackson 3, Spring Framework 7, Security 7, Spring AI 1.0, HTTP service clients. Load before working with Spring Boot.

UncategorizedID: nevaberry/nevaberry-plugins/spring-boot-knowledge-patch

Install this agent skill to your local

pnpm dlx add-skill https://github.com/Nevaberry/nevaberry-plugins/tree/HEAD/plugins/spring-boot-knowledge-patch/skills/spring-boot-knowledge-patch

Skill Files

Browse the full folder contents for spring-boot-knowledge-patch.

Download Skill

Loading file tree…

plugins/spring-boot-knowledge-patch/skills/spring-boot-knowledge-patch/SKILL.md

Skill Metadata

Name
spring-boot-knowledge-patch
Description
"Spring Boot changes since training cutoff (latest: 4.0) — modular starters, Jackson 3, Spring Framework 7, Security 7, Spring AI 1.0, HTTP service clients. Load before working with Spring Boot."

Spring Boot Knowledge Patch

Covers Spring Boot 3.4–4.0, Spring Framework 7.0, Spring Security 7.0, and Spring AI 1.0.

Index

| Topic | Reference | Key features | |---|---|---| | Boot 4.0 migration | references/boot-4-migration.md | Modular starters, Jackson 3, HTTP service clients, RestTestClient, breaking changes | | Spring Framework 7.0 | references/framework-7.md | @Retryable in core, BeanRegistrar, JmsClient, API versioning, JPA 3.2 | | Spring Security 7.0 | references/security-7.md | PathPatternRequestMatcher, DSL cleanup, SPA CSRF, MFA, OAuth2 HTTP services | | Spring AI 1.0 | references/spring-ai.md | ChatClient, @Tool, advisors/RAG, VectorStore, ChatMemory, MCP | | Boot 3.4–3.5 features | references/boot-3.4-3.5.md | Structured logging, actuator access model, MockMvcTester, env properties import |


Quick Reference — Boot 4.0 Starter Renames

| Old (Boot 3.x) | New (Boot 4.0) | |---|---| | spring-boot-starter-web | spring-boot-starter-webmvc | | spring-boot-starter-oauth2-client | spring-boot-starter-security-oauth2-client | | spring-boot-starter-oauth2-resource-server | spring-boot-starter-security-oauth2-resource-server | | spring-boot-starter | spring-boot-starter-classic (gradual migration) | | spring-boot-starter-test | spring-boot-starter-test-classic (gradual migration) | | (bare flyway-core) | spring-boot-starter-flyway (now required) | | (bare liquibase-core) | spring-boot-starter-liquibase (now required) |

Convention: spring-boot-<technology>, spring-boot-starter-<technology>, spring-boot-starter-<technology>-test.

Every technology now has a test starter companion. @WithMockUser requires spring-boot-starter-security-test.


Quick Reference — Jackson 3 (Boot 4.0 Default)

Jackson 3 uses tools.jackson package (annotations stay in com.fasterxml.jackson.annotation).

| Old (Jackson 2) | New (Jackson 3) | |---|---| | @JsonComponent | @JacksonComponent | | @JsonMixin | @JacksonMixin | | JsonObjectSerializer | ObjectValueSerializer | | Jackson2ObjectMapperBuilderCustomizer | JsonMapperBuilderCustomizer | | spring.jackson.read.* | spring.jackson.json.read.* | | spring.jackson.write.* | spring.jackson.json.write.* |

Compatibility module: spring-boot-jackson2 (deprecated). Properties under spring.jackson2.*.


HTTP Service Clients (Boot 4.0)

Annotated interfaces get auto-configured implementations:

@HttpExchange(url = "https://echo.zuplo.io")
public interface EchoService {
    @PostExchange
    Map<?, ?> echo(@RequestBody Map<String, String> message);
}

Group registration with per-group configuration (Framework 7.0):

@ImportHttpServices(group = "weather", types = {WeatherApi.class})
@ImportHttpServices(group = "user", types = {UserApi.class})
class Config extends AbstractHttpServiceRegistrar {
    @Bean
    RestClientHttpServiceGroupConfigurer configurer() {
        return groups -> groups.filterByName("weather")
            .forEachClient((g, b) -> b.defaultHeader("X-Api-Key", key));
    }
}

RestTestClient (Boot 4.0)

Non-reactive alternative to WebTestClient. Works with @SpringBootTest, @AutoConfigureMockMvc, or random port:

@Autowired
RestTestClient restTestClient;

HttpMessageConverters Deprecated (Boot 4.0)

Replace custom HttpMessageConverter beans with customizers:

@Bean
ServerHttpMessageConvertersCustomizer myCustomizer() {
    return converters -> converters.jsonMessageConverter(myConverter);
}
// Also: ClientHttpMessageConvertersCustomizer for client-side

Spring Framework 7.0 — @Retryable in Core

Spring Retry merged into spring-core. Enable with @EnableResilientMethods:

@Configuration
@EnableResilientMethods
class AppConfig { }

@Service
class MyService {
    @Retryable(maxAttempts = 3)
    public String fetchData() { ... }

    @ConcurrencyLimit(limit = 5)
    public String limitedOp() { ... }
}

Spring Security 7.0 — Essential Changes

MvcRequestMatcher and AntPathRequestMatcher removed. Use PathPatternRequestMatcher:

http.authorizeHttpRequests(auth -> auth
    .requestMatchers("/api/**").hasRole("USER")
    .anyRequest().authenticated()
);

DSL cleanup: and() removed (use lambda DSL), authorizeRequests removed (use authorizeHttpRequests).

SPA CSRF: http.csrf(csrf -> csrf.spa());


Spring AI 1.0 — ChatClient

@Autowired ChatClient chatClient;

String answer = chatClient.prompt()
    .user("What is Spring Boot?")
    .call()
    .content();

// Structured output
record ActorFilms(String actor, List<String> movies) {}
ActorFilms result = chatClient.prompt()
    .user("List films with Tom Hanks")
    .call()
    .entity(ActorFilms.class);

Tool calling:

chatClient.prompt()
    .user("What's the weather in London?")
    .tools(weatherTools)  // @Tool-annotated @Component
    .call()
    .content();

Boot 3.4 — Structured Logging

logging.structured.format.console=ecs    # ecs, gelf, or logstash
logging.structured.format.file=logstash

Boot 3.4 — Actuator Access Model

Endpoint enabled/disabled replaced with fine-grained access control:

management.endpoints.access.default=unrestricted
management.endpoint.health.access=read-only
management.endpoints.access.max-permitted=read-only  # operator cap

Values: none, read-only, unrestricted. Old enabled properties are deprecated.

Boot 3.4 — RestClient HTTP Client Selection

spring.http.client.factory=jdk  # http-components, jetty, reactor, jdk, simple
spring.http.client.redirects=dont-follow  # default: follow

Auto-detection order: Apache HC > Jetty > Reactor Netty > JDK HttpClient > Simple.


Key Breaking Changes (Boot 4.0 / Framework 7.0)

  • Undertow removed — use Tomcat or Jetty (Servlet 6.1 baseline)
  • RestTemplate deprecated — use RestClient
  • javax.annotation/javax.inject removed — use jakarta.*
  • ListenableFuture removed — use CompletableFuture
  • JUnit 6 baseline for test framework
  • Liveness/readiness probes enabled by default
  • DevTools Live Reload disabled by default
  • Embedded launch scripts removed — use java -jar directly
  • MongoDB properties renamed: spring.data.mongodb.*spring.mongodb.*
  • Elasticsearch: RestClientRest5Client
  • Hibernate: hibernate-jpamodelgenhibernate-processor
  • @EntityScan moved to org.springframework.boot.persistence.autoconfigure.EntityScan
  • spring.dao.exceptiontranslation.enabledspring.persistence.exceptiontranslation.enabled
  • management.tracing.enabledmanagement.tracing.export.enabled
  • logging.console.enabled=false disables console logging
  • WAR on Tomcat: use spring-boot-starter-tomcat-runtime instead of spring-boot-starter-tomcat
  • Spring Retry dependency management removed — use Spring Framework's @Retryable instead
  • Authorization Server now part of Spring Security; use spring-security.version

Reference Files

| File | Contents | |---|---| | boot-4-migration.md | Modular starters, Jackson 3, HTTP services, RestTestClient, OpenTelemetry, breaking changes | | framework-7.md | @Retryable/@ConcurrencyLimit, BeanRegistrar, JmsClient, API versioning, JPA 3.2, HttpHeaders | | security-7.md | PathPattern matchers, DSL cleanup, SPA CSRF, MFA, Authorization Server, OAuth2 HTTP services | | spring-ai.md | ChatClient, @Tool, advisors/RAG, VectorStore, ChatMemory, MCP server/client | | boot-3.4-3.5.md | Structured logging, actuator access, RestClient config, MockMvcTester, bean defaults, env import |