Module 24: Spring Boot Client
Use the autoconfigured ACP client in a Spring Boot application. Connect to agents with just properties — no manual transport or client construction.Prerequisites
- Java 21+ (Spring Boot 4.x requirement)
- Module 23: Spring Boot Agent built and available
What You’ll Learn
- Injecting
AcpSyncClientfrom autoconfiguration - Configuring the client transport via
application.properties - Property-driven transport selection (stdio vs WebSocket)
Dependencies
Same starter as the agent side:The Client
The autoconfiguredAcpSyncClient is injected like any Spring bean:
Configuration
application.properties:stdio.command property and creates a StdioAcpClientTransport that launches the agent as a subprocess.
What the Autoconfiguration Does
- Detects transport properties —
stdio.commandtriggers stdio transport;websocket.uritriggers WebSocket - Creates
AcpSyncClientandAcpAsyncClient— configured with timeout and client capabilities - Manages shutdown —
DisposableBeancallscloseGracefully()on context close
Transport Selection
The autoconfiguration picks the transport based on which properties are set:| Properties Set | Transport Created |
|---|---|
spring.acp.client.transport.stdio.command | StdioAcpClientTransport |
spring.acp.client.transport.websocket.uri | WebSocketAcpClientTransport |
spring.acp.client.transport.type=stdio | Explicit stdio selection |
spring.acp.client.transport.type=websocket | Explicit WebSocket selection |
Build & Run
Client Configuration Properties
| Property | Default | Description |
|---|---|---|
spring.acp.client.request-timeout | 30s | Request timeout |
spring.acp.client.transport.type | auto-detect | stdio or websocket |
spring.acp.client.transport.stdio.command | — | Command to launch agent |
spring.acp.client.transport.stdio.args | — | Command arguments |
spring.acp.client.transport.stdio.env.* | — | Environment variables |
spring.acp.client.transport.websocket.uri | — | WebSocket URI |
spring.acp.client.transport.websocket.connect-timeout | 10s | Connection timeout |
spring.acp.client.capabilities.read-text-file | true | Advertise file read capability |
spring.acp.client.capabilities.write-text-file | true | Advertise file write capability |
spring.acp.client.capabilities.terminal | false | Advertise terminal capability |