Skip to content

Conversation

@tomsun28
Copy link
Contributor

@tomsun28 tomsun28 commented Jul 2, 2025

Description

feat: support springboot integrated and example

  • Follow the CONTRIBUTING Guide.
  • Make your Pull Request title in the https://www.conventionalcommits.org/ specification.
    • Important Prefixes for release-please:
      • fix: which represents bug fixes, and correlates to a SemVer patch.
      • feat: represents a new feature, and correlates to a SemVer minor.
      • feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.
  • Ensure the tests pass
  • Appropriate READMEs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @tomsun28, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the A2A Java SDK by introducing first-class support for Spring Boot. It provides a dedicated Spring Boot adapter module with auto-configuration capabilities and a new example application, making it much easier for developers to integrate A2A agents into their Spring Boot projects. The changes streamline the setup process and expose A2A protocol endpoints through a standard Spring web controller, aligning with common Java enterprise development practices.

Highlights

  • New Spring Boot Integration Module: Introduced a new Maven module sdk-spring (artifact a2a-java-sdk-server-spring) to provide a Spring Boot adapter for the A2A protocol, enabling seamless integration of A2A server functionality into Spring Boot applications.
  • Spring Boot Auto-Configuration: Added A2ASpringAutoConfiguration to automatically configure necessary A2A server beans (like AgentCard, TaskStore, QueueManager, PushNotifier, RequestHandler, and JSONRPCHandler) based on Spring Boot properties, simplifying setup and reducing boilerplate.
  • Externalized Configuration: Implemented A2AServerProperties to allow comprehensive configuration of A2A agent metadata, capabilities, and server settings via application.yml or application.properties, providing a familiar Spring-style configuration experience.
  • New Spring Boot Example Application: Included a new spring-helloworld example application demonstrating how to set up a basic A2A agent using the new Spring Boot integration, complete with its own pom.xml, main application class, A2A server configuration, and a REST controller for A2A endpoints.
  • A2A Protocol Endpoints: The A2AServerController exposes standard A2A JSON-RPC endpoints for both non-streaming and streaming requests (using Server-Sent Events), as well as dedicated endpoints for retrieving the Agent Card (/.well-known/agent.json) and authenticated extended Agent Card (/agent/authenticatedExtendedCard).
  • Comprehensive Documentation: A detailed README.md for the new sdk-spring module has been added, outlining its features, dependencies, a quick start guide, endpoint descriptions, streaming response handling, exception handling, and configuration options.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces Spring Boot integration for the A2A Java SDK. The changes include a new Spring Boot starter module, auto-configuration, and a helloworld example application.

My review focuses on improving the clarity and correctness of the example application and its documentation. I've identified a critical issue with a non-existent Spring Boot version in the example's pom.xml and a configuration mismatch in its application.yml. I've also suggested improvements to error handling and refactoring opportunities.

@tomsun28
Copy link
Contributor Author

tomsun28 commented Jul 2, 2025

2025-07-03 00 17 40

@tomsun28
Copy link
Contributor Author

Please take a review @fjuma @kabir thanks.

@kabir
Copy link
Collaborator

kabir commented Jul 15, 2025

Hi @tomsun28

After some discussion, we decided to only put the reference implementation in this repo (so we have something to test against), and to keep integrations with various frameworks in their own repositories. Otherwise we risk ending up maintaining too many things which we don't know much about :-)

See #178 for more information.

What used to be called sdk-jakarta in this repository now lives here. https://github.com/wildfly-extras/a2a-java-sdk-server-jakarta. This isn't totally ready yet, I have some WIP in https://github.com/wildfly-extras/a2a-java-sdk-server-jakarta/compare/main...kabir:multi-module?expand=1. And until I get this cleaned up, working with the TCK etc. it is still a bit early to point you to this as an example to follow.

Sorry for the inconvenience, but I hope to have something in the next day or two.

@tomsun28
Copy link
Contributor Author

Hi @kabir

Thanks for your reponse,

Otherwise we risk ending up maintaining too many things which we don't know much about.

Perhaps we can also trust the power of community — many are willing to contribute. Also I do understand your considerations and decision.

It might be helpful to include links to other external integrations in the README later on, so users can more easily find and adopt them.

@kabir
Copy link
Collaborator

kabir commented Jul 16, 2025

Hi, this is still kind of an early draft but here is the current plan https://github.com/a2aproject/a2a-java/blob/main/CONTRIBUTING_INTEGRATIONS.md

Integrations are currently listed at https://github.com/a2aproject/a2a-java/blob/main/README.md#server-integrations. Once we have s few more, we'll figure out a better way to present and announce these :-)

@kabir
Copy link
Collaborator

kabir commented Jul 17, 2025

@tomsun28 I've already merged a fair bit of the Jakarta SDK work, and the remainder is in here wildfly-extras/a2a-java-sdk-server-jakarta#5. Tomorrow (probably) I will add better documentation.

Hopefully this serves as a good example for you.

@fjuma
Copy link
Collaborator

fjuma commented Sep 22, 2025

@tomsun28 Thanks for working on this! Just wondering if it would make sense to close this PR now since integrations should be provided in other repos?

@tomsun28
Copy link
Contributor Author

hi @fjuma @kabir Sorry I missed this earlier. I’ll close this PR and submit it to other repos when have time in the future. Thank you for your efforts.

@tomsun28 tomsun28 closed this Sep 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants