Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft interface clients autoconfiguration #42003

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

OlgaMaciaszek
Copy link
Contributor

@OlgaMaciaszek OlgaMaciaszek commented Aug 22, 2024

  • Add AOT instrumentation
  • Add tests
  • Add javadocs
  • Add documentation

Related sample repo: https://github.com/OlgaMaciaszek/demo-interfaceclients-autoconfig

Fixes gh-31337

@OlgaMaciaszek OlgaMaciaszek changed the title Draft interface clients autoconfiguration - WIP - not ready for review yet WIP - not ready for review yet - Draft interface clients autoconfiguration Aug 22, 2024
@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Aug 22, 2024
@OlgaMaciaszek OlgaMaciaszek force-pushed the draft-interface-clients-autoconfiguration branch from 9ad2104 to ad87582 Compare August 22, 2024 15:45
@OlgaMaciaszek
Copy link
Contributor Author

Possible integrations to consider adding in other projects later on:

  • Spring Cloud - resolve serviceId from qualifier
  • Spring Cloud LoadBalancer - create load-balanced client beans
  • Spring Cloud LoadBalancer - use RestTemplate.Builder as well
  • Spring Cloud CircuitBreaker - create client beans with ciruit-breaking set up
  • IntelliJ (and other IDEs - resolve annotated clients as visible for autowiring)

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface HttpClient {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Consider moving over to Framework.

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RSocketClient {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Consider moving over to Framework.

@OlgaMaciaszek
Copy link
Contributor Author

Setting 3.4.1 in Javadoc @since entries, as I assume that's the earliest we can get it in.

…uration' into draft-interface-clients-autoconfiguration

# Conflicts:
#	spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/AbstractInterfaceClientsImportRegistrar.java
#	spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/QualifiedBeanProvider.java
#	spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/http/HttpClient.java
#	spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/rsocket/RSocketClient.java
@wilkinsona
Copy link
Member

We still have 3.4.0-M3 in September an RC1 in October so 3.4.0 remains a possibility. If we don't manage that, it'd have to wait until a 3.5 milestone as we really try not to ship enhancements in maintenance releases.

@OlgaMaciaszek OlgaMaciaszek changed the title WIP - not ready for review yet - Draft interface clients autoconfiguration Draft interface clients autoconfiguration Sep 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: waiting-for-triage An issue we've not yet triaged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support declarative HTTP clients
3 participants