How spring-ai-community/spring-ai-a2a works
Spring AI A2A is a Spring Boot server integration that exposes Spring AI agents through A2A endpoints. A client discovers an agent card, submits a message, and can query or cancel the resulting task; the request handler dispatches execution to an agent executor, which bridges to ChatClient and returns a task artifact. Auto-configuration supplies controllers, task/event infrastructure, and configuration defaults. The Airbnb example documents a separate multi-agent orchestration branch. The example source was not excerpted, so its internal links are documented but unverified.
Main entry points: A2AServerAutoConfiguration.java Server Auto-Config · HostApplication.java Host Agent · DefaultAgentExecutor.java Default Executor · MessageController.java Message Endpoint
Components 22
A2A API
- A2A Controllers
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/controller - Message Endpoint
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/controller/MessageController.java - Agent Card
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/controller/AgentCardController.java - Task Endpoints
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/controller/TaskController.java
Agent Runtime
- A2A Request Handler
- Server Auto-Config
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Properties
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerProperties.java - Config Provider
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/SpringA2AConfigProvider.java - Task Store
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Event Queues
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Push Notifications
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Default Executor
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/executor/DefaultAgentExecutor.java - Chat Handler
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/executor/ChatClientExecutorHandler.java
Agent Examples
- Host Agent
spring-ai-a2a-examples/airbnb-planner/host-agent/src/main/java/org/springaicommunity/a2a/examples/host/HostApplication.java - Agent Routing
spring-ai-a2a-examples/airbnb-planner/host-agent/src/main/java/org/springaicommunity/a2a/examples/host/RoutingController.java - Remote Connections
spring-ai-a2a-examples/airbnb-planner/host-agent/src/main/java/org/springaicommunity/a2a/examples/host/RemoteAgentConnections.java - Airbnb Agent
spring-ai-a2a-examples/airbnb-planner/airbnb-agent/src/main/java/org/springaicommunity/a2a/examples/composable/airbnb/AirbnbPlannerApplication.java - Weather Agent
spring-ai-a2a-examples/airbnb-planner/weather-agent/src/main/java/org/springaicommunity/a2a/examples/composable/weather/WeatherAgentApplication.java - Weather Tools
spring-ai-a2a-examples/airbnb-planner/weather-agent/src/main/java/org/springaicommunity/a2a/examples/composable/weather/WeatherTools.java
Other components
- A2A Client
- Spring AI ChatClient
- Agent Tools
Connections 22
- A2A Client → Message Endpoint: sends message
README.md - A2A Client → Agent Card: discovers card
README.md - A2A Client → Task Endpoints: queries task
README.md - Message Endpoint → A2A Request Handler: delegates request
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/controller/MessageController.java - Task Endpoints → A2A Request Handler: queries or cancels
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/controller/TaskController.java - Server Auto-Config → A2A Controllers: registers endpoints
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → A2A Request Handler: creates handler
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → Default Executor: wires executor
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → Task Store: creates store
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → Event Queues: creates queues
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → Push Notifications: configures sender
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → Config Provider: creates provider
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - Server Auto-Config → Server Properties: enables properties
spring-ai-a2a-server-autoconfigure/src/main/java/org/springaicommunity/a2a/server/autoconfigure/A2AServerAutoConfiguration.java - A2A Request Handler → Default Executor: dispatches task
README.md - Default Executor → Chat Handler: invokes handler
spring-ai-a2a-server/src/main/java/org/springaicommunity/a2a/server/executor/DefaultAgentExecutor.java - Chat Handler → Spring AI ChatClient: executes prompt
README.md - Spring AI ChatClient → Agent Tools: invokes tools
README.md - Host Agent → Agent Routing: exposes orchestration
- Agent Routing → Remote Connections: uses connections
- Host Agent → Airbnb Agent: coordinates agents
README.md - Host Agent → Weather Agent: coordinates agents
README.md - Weather Agent → Weather Tools: provides tools
README.md