Skip to content

Conversation

@VahidRamezaniDB
Copy link
Contributor

This PR adds comprehensive configuration metadata documentation for the spring-grpc-client-spring-boot-autoconfigure module, significantly improving the developer experience when configuring gRPC clients.

What Changed

Enhanced additional-spring-configuration-metadata.json with complete documentation for all available configuration properties:

  • Added 3 property groups to organize related configurations
  • Documented 19 previously undocumented properties covering all default-channel configuration options
  • Added IDE hints for common enum values (stub factories, negotiation types, load balancing policies)

Newly Documented Properties

The following properties now have full documentation including descriptions, types, and default values:

  • spring.grpc.client.default-stub-factory - Stub factory selection
  • spring.grpc.client.default-channel.* - All default channel configuration options:
    • Connection settings (address, negotiation-type, secure)
    • Keep-alive configuration (enable-keep-alive, keep-alive-time, keep-alive-timeout, keep-alive-without-calls)
    • Resource limits (max-inbound-message-size, max-inbound-metadata-size, idle-timeout)
    • Health checking (health.enabled, health.service-name)
    • SSL/TLS (ssl.enabled, ssl.bundle)
    • Advanced features (default-load-balancing-policy, service-config, user-agent, default-deadline)

Testing

  • Validated JSON syntax
  • Verified property names match actual configuration properties in GrpcClientProperties.java
  • Confirmed type mappings are correct
  • Tested that the metadata structure follows Spring Boot configuration metadata format

Notes

I'm happy to accept any recommended modifications or additions to this PR. If there are additional properties, different wording preferences, or formatting standards specific to this
project, please let me know and I'll update accordingly.

This completes the documentations on configuration properties used by `GrpcCLientProperties`.
Creates three groups of properties (client, client.default-channel, client.channels). Also provides hints for enumarated values

Signed-off-by: Vahid Ramezani <[email protected]>
@spencergibb
Copy link
Member

Anything marked with @ConfigurationProperties should have this metadata auto generated.

@onobc
Copy link
Contributor

onobc commented Dec 14, 2025

👋🏻 @VahidRamezaniDB ,

As @spencergibb pointed pointed out - this is magically done for us (which is a great thing).

The Spring Boot configuration processor generates the metadata file and we in turn consume the metadata in our docs and list the properties in the appendix.

Note

We do not check this into source control and that is likely why you did not notice it. However, to see what it generates, run ./mvnw clean install -DskipTests and then navigate to spring-grpc-server-spring-boot-autoconfigure/target/classes/META-INF/spring-configuration-metadata.json.

Tip

Another good thing to know is that the javadoc descriptions that the automatic docs are driven from should be plain text as they are not processed prior to consumption (more details).

Thank you for the effort though. I am closing this one out now.

@onobc onobc closed this Dec 14, 2025
@VahidRamezaniDB
Copy link
Contributor Author

@onobc
I'm greatful for the explanation

@onobc
Copy link
Contributor

onobc commented Dec 16, 2025

@onobc I'm greatful for the explanation

Anytime @VahidRamezaniDB . Thanks for your help w/ the project.

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