Speakeasy Logo
Skip to Content

Spring Boot Integration for Java SDKs

Speakeasy auto-generates Spring Boot starters  alongside Java SDKs, enabling zero-configuration integration with sensible defaults.

Module Structure

  • build.gradle

Three modules provide complete Spring Boot integration:

Configuration Properties

Type-safe @ConfigurationProperties are auto-generated from your OpenAPI spec, namespaced under projectId:

Property Mapping:

  • Servers: Indexed (serverIdx) or named (server) with variables as enums
  • Security: Flattened schemes (API keys, OAuth, HTTP auth)
  • Global Parameters: Headers, query params, path params from spec
  • SDK Behavior: Retry policies, HTTP client settings
  • Rich Types: OpenAPI enums → Java enums, duration strings → Duration objects

Auto-Configuration

Beans are conditionally registered based on classpath and properties:

Bean Registration:

  • Core SDK: Always present with starter
  • Sub-SDKs: Per API group (Users, Orders, etc.)
  • Security: Conditional on my-api.security.*
  • Retry: Conditional on my-api.retry-config.strategy
  • Async: When async mode enabled

Usage

Configure via application.yml:

Inject and use with zero boilerplate:

WebFlux Integration

Async SDKs integrate seamlessly with Spring WebFlux :

  • CompletableFutureMono conversion
  • PublisherFlux for streaming (pagination, SSE, JSONL)
  • Non-blocking reactive streams  support

Publishing

No workflow changes required. Gradle auto-configures additional artifacts:

  • {project-name}-spring-boot-autoconfigure-{version}.jar
  • {project-name}-spring-boot-starter-{version}.jar

Published alongside your main SDK to existing repositories.

Benefits

For API Producers:

  • Zero deployment overhead
  • Reduced support via familiar Spring Boot patterns 
  • Faster adoption by Spring developers
  • Enterprise appeal with Actuator  and ecosystem compatibility

For SDK Users:

  • Add starter dependency, configure via application.yml
  • Type-safe properties with IDE support
  • Rich type mapping (enums, durations)
  • WebFlux integration when async enabled

Compatibility: Spring Boot 2.x/3.x, Java 11+

Last updated on