Spring Boot Integration for Java SDKs
Speakeasy auto-generates Spring Boot starters
Configuration
Set generateSpringBootStarter: false
in your gen.yaml
to disable. Enabled by default.
Module Structure
build.gradle
Three modules provide complete Spring Boot integration:
- Auto-configuration: Bean registration with
@ConditionalOnMissingBean
- Properties:
@ConfigurationProperties
from OpenAPI spec - Starter: Dependency aggregator
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
CompletableFuture
→Mono
conversionPublisher
→Flux
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