From 7cf912aafb9a2ac536fa5500bdf47cf71da3c4f3 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Sun, 5 Jul 2026 23:23:34 +0800 Subject: [PATCH 01/12] Standardize Javadoc example headings Replaced `"

Example Usage:"` with `"

Example Usage

"` across discovery, service registry, fault-tolerance, and OpenFeign classes. This makes generated Javadoc examples render with consistent section headings and improves readability without changing runtime behavior. --- .../ReactiveDiscoveryClientAdapter.java | 12 ++++---- .../discovery/UnionDiscoveryClient.java | 18 ++++++------ .../DiscoveryClientAutoConfiguration.java | 2 +- ...ctiveDiscoveryClientAutoConfiguration.java | 2 +- .../registry/InMemoryServiceRegistry.java | 12 ++++---- .../MultipleAutoServiceRegistration.java | 10 +++---- .../registry/MultipleRegistration.java | 20 ++++++------- .../registry/MultipleServiceRegistry.java | 14 +++++----- .../registry/RegistrationMetaData.java | 28 +++++++++---------- .../SimpleAutoServiceRegistration.java | 10 +++---- .../registry/SimpleServiceRegistry.java | 20 ++++++------- ...RegistrationEndpointAutoConfiguration.java | 4 +-- .../EventPublishingRegistrationAspect.java | 10 +++---- .../ServiceRegistryAutoConfiguration.java | 6 ++-- ...oServiceRegistrationAutoConfiguration.java | 4 +-- ...bFluxServiceRegistryAutoConfiguration.java | 4 +-- ...ebMvcServiceRegistryAutoConfiguration.java | 4 +-- .../WebServiceRegistryAutoConfiguration.java | 2 +- .../AbstractServiceRegistrationEndpoint.java | 10 +++---- .../ServiceDeregistrationEndpoint.java | 2 +- .../endpoint/ServiceRegistrationEndpoint.java | 4 +-- .../event/RegistrationDeregisteredEvent.java | 4 +-- .../registry/event/RegistrationEvent.java | 2 +- .../RegistrationPreDeregisteredEvent.java | 4 +-- .../event/RegistrationPreRegisteredEvent.java | 4 +-- .../event/RegistrationRegisteredEvent.java | 4 +-- .../service/util/ServiceInstanceUtils.java | 2 +- .../loadbalancer/WeightedRoundRobin.java | 18 ++++++------ ...TomcatFaultToleranceAutoConfiguration.java | 2 +- .../TomcatDynamicConfigurationListener.java | 10 +++---- .../autoconfigure/FeignAutoConfiguration.java | 2 +- ...ignClientAutoRefreshAutoConfiguration.java | 4 +-- .../autorefresh/AutoRefreshCapability.java | 18 ++++++------ ...ignClientConfigurationChangedListener.java | 6 ++-- .../autorefresh/FeignComponentRegistry.java | 20 ++++++------- .../CompositedRequestInterceptor.java | 16 +++++------ .../components/DecoratedContract.java | 4 +-- .../components/DecoratedDecoder.java | 4 +-- .../components/DecoratedEncoder.java | 4 +-- .../components/DecoratedErrorDecoder.java | 4 +-- .../components/DecoratedFeignComponent.java | 18 ++++++------ .../components/DecoratedQueryMapEncoder.java | 4 +-- .../components/DecoratedRetryer.java | 6 ++-- 43 files changed, 179 insertions(+), 179 deletions(-) diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/ReactiveDiscoveryClientAdapter.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/ReactiveDiscoveryClientAdapter.java index a006ac46..edd2893e 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/ReactiveDiscoveryClientAdapter.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/ReactiveDiscoveryClientAdapter.java @@ -43,7 +43,7 @@ public class ReactiveDiscoveryClientAdapter implements DiscoveryClient { * Create a new {@link ReactiveDiscoveryClientAdapter} that wraps the given * {@link ReactiveDiscoveryClient} as a blocking {@link DiscoveryClient}. * - *

Example Usage: + *

Example Usage

*
{@code
      * ReactiveDiscoveryClient reactiveClient = new SimpleReactiveDiscoveryClient(properties);
      * DiscoveryClient adapter = new ReactiveDiscoveryClientAdapter(reactiveClient);
@@ -59,7 +59,7 @@ public ReactiveDiscoveryClientAdapter(ReactiveDiscoveryClient reactiveDiscoveryC
     /**
      * Delegates to the underlying {@link ReactiveDiscoveryClient#description()} method.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * String desc = adapter.description();
      * }
@@ -75,7 +75,7 @@ public String description() { * Returns a blocking list of {@link ServiceInstance} objects for the given service ID * by collecting results from the underlying {@link ReactiveDiscoveryClient}. * - *

Example Usage: + *

Example Usage

*
{@code
      * List instances = adapter.getInstances("test-service");
      * }
@@ -93,7 +93,7 @@ public List getInstances(String serviceId) { * Returns a blocking list of service names by collecting results from the * underlying {@link ReactiveDiscoveryClient}. * - *

Example Usage: + *

Example Usage

*
{@code
      * List services = adapter.getServices();
      * }
@@ -110,7 +110,7 @@ public List getServices() { * Delegates to the underlying {@link ReactiveDiscoveryClient#probe()} method to * verify the discovery client is operational. * - *

Example Usage: + *

Example Usage

*
{@code
      * adapter.probe();
      * }
@@ -123,7 +123,7 @@ public void probe() { /** * Returns the order value from the underlying {@link ReactiveDiscoveryClient}. * - *

Example Usage: + *

Example Usage

*
{@code
      * int order = adapter.getOrder();
      * }
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/UnionDiscoveryClient.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/UnionDiscoveryClient.java index a24daffa..875b7cbd 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/UnionDiscoveryClient.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/UnionDiscoveryClient.java @@ -39,7 +39,7 @@ /** * The {@link DiscoveryClient} implementation for a union of the given {@link DiscoveryClient} * - *

Example Usage: + *

Example Usage

*
{@code
  * // Register UnionDiscoveryClient as a Spring bean, then retrieve merged service instances
  * UnionDiscoveryClient unionDiscoveryClient = applicationContext.getBean(UnionDiscoveryClient.class);
@@ -60,7 +60,7 @@ public final class UnionDiscoveryClient implements DiscoveryClient, ApplicationC
     /**
      * Returns a human-readable description of this {@link DiscoveryClient}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * String desc = unionDiscoveryClient.description();
      * }
@@ -76,7 +76,7 @@ public String description() { * Returns a merged list of {@link ServiceInstance} objects from all registered * {@link DiscoveryClient} instances for the given service ID. * - *

Example Usage: + *

Example Usage

*
{@code
      * List instances = unionDiscoveryClient.getInstances("test");
      * }
@@ -101,7 +101,7 @@ public List getInstances(String serviceId) { * Returns a deduplicated list of service names from all registered {@link DiscoveryClient} * instances, preserving insertion order. * - *

Example Usage: + *

Example Usage

*
{@code
      * List services = unionDiscoveryClient.getServices();
      * }
@@ -126,7 +126,7 @@ public List getServices() { * {@link CompositeDiscoveryClient} and this instance itself. The list is lazily initialized * from the {@link ApplicationContext} on first access and cached for subsequent calls. * - *

Example Usage: + *

Example Usage

*
{@code
      * UnionDiscoveryClient unionClient = applicationContext.getBean(UnionDiscoveryClient.class);
      * List clients = unionClient.getDiscoveryClients();
@@ -158,7 +158,7 @@ public List getDiscoveryClients() {
      * Returns the order value of this client. This client uses {@code HIGHEST_PRECEDENCE}
      * to ensure it takes priority over other {@link DiscoveryClient} implementations.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * int order = unionDiscoveryClient.getOrder();
      * }
@@ -174,7 +174,7 @@ public int getOrder() { * Callback invoked after all singleton beans have been instantiated. Eagerly initializes * the internal list of {@link DiscoveryClient} instances. * - *

Example Usage: + *

Example Usage

*
{@code
      * // Automatically called by the Spring container after singleton initialization
      * unionDiscoveryClient.afterSingletonsInstantiated();
@@ -188,7 +188,7 @@ public void afterSingletonsInstantiated() {
     /**
      * Clears the cached list of {@link DiscoveryClient} instances when this bean is destroyed.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Automatically called by the Spring container on shutdown
      * unionDiscoveryClient.destroy();
@@ -204,7 +204,7 @@ public void destroy() throws Exception {
     /**
      * Sets the {@link ApplicationContext} used to look up {@link DiscoveryClient} beans.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Automatically called by the Spring container
      * unionDiscoveryClient.setApplicationContext(applicationContext);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/DiscoveryClientAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/DiscoveryClientAutoConfiguration.java
index f53a997b..dfd3b365 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/DiscoveryClientAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/DiscoveryClientAutoConfiguration.java
@@ -76,7 +76,7 @@ public static class UnionConfiguration {
          * Creates a {@link UnionDiscoveryClient} bean that aggregates all {@link DiscoveryClient}
          * instances in the {@link org.springframework.context.ApplicationContext}.
          *
-         * 

Example Usage: + *

Example Usage

*
{@code
          * // Activated when microsphere.spring.cloud.client.discovery.mode=union
          * UnionDiscoveryClient client = applicationContext.getBean(UnionDiscoveryClient.class);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/ReactiveDiscoveryClientAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/ReactiveDiscoveryClientAutoConfiguration.java
index 017d49b5..5fdee7c2 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/ReactiveDiscoveryClientAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/discovery/autoconfigure/ReactiveDiscoveryClientAutoConfiguration.java
@@ -58,7 +58,7 @@ public static class BlockingConfiguration {
          * Creates a {@link ReactiveDiscoveryClientAdapter} bean that adapts a
          * {@link ReactiveDiscoveryClient} to the blocking {@link org.springframework.cloud.client.discovery.DiscoveryClient} interface.
          *
-         * 

Example Usage: + *

Example Usage

*
{@code
          * // Auto-configured when both reactive and blocking discovery are enabled
          * DiscoveryClient client = applicationContext.getBean(ReactiveDiscoveryClientAdapter.class);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/InMemoryServiceRegistry.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/InMemoryServiceRegistry.java
index 9f77d641..7281d8f6 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/InMemoryServiceRegistry.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/InMemoryServiceRegistry.java
@@ -40,7 +40,7 @@ public class InMemoryServiceRegistry implements ServiceRegistry {
      * Registers the given {@link Registration} instance in the in-memory storage,
      * keyed by its instance ID.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry registry = new InMemoryServiceRegistry();
      * Registration registration = createRegistration();
@@ -58,7 +58,7 @@ public void register(Registration registration) {
     /**
      * Removes the given {@link Registration} instance from the in-memory storage.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry registry = new InMemoryServiceRegistry();
      * Registration registration = createRegistration();
@@ -77,7 +77,7 @@ public void deregister(Registration registration) {
     /**
      * Closes this registry by clearing all stored {@link Registration} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry registry = new InMemoryServiceRegistry();
      * registry.register(registration);
@@ -93,7 +93,7 @@ public void close() {
      * Sets the status of the given {@link Registration} by storing it in
      * the registration's metadata under the {@code _status_} key.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry registry = new InMemoryServiceRegistry();
      * registry.register(registration);
@@ -114,7 +114,7 @@ public void setStatus(Registration registration, String status) {
     /**
      * Retrieves the status of the given {@link Registration} from its metadata.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry registry = new InMemoryServiceRegistry();
      * registry.register(registration);
@@ -138,7 +138,7 @@ public Object getStatus(Registration registration) {
      * Retrieves the metadata {@link Map} for the given {@link Registration}
      * from the in-memory storage.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry registry = new InMemoryServiceRegistry();
      * registry.register(registration);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleAutoServiceRegistration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleAutoServiceRegistration.java
index 227305f5..9c0f81b1 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleAutoServiceRegistration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleAutoServiceRegistration.java
@@ -25,7 +25,7 @@ public class MultipleAutoServiceRegistration extends AbstractAutoServiceRegistra
      * {@link MultipleRegistration}, {@link ServiceRegistry}, and
      * {@link AutoServiceRegistrationProperties}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration registration = new MultipleRegistration(registrations);
      * ServiceRegistry serviceRegistry = new InMemoryServiceRegistry();
@@ -50,7 +50,7 @@ public MultipleAutoServiceRegistration(MultipleRegistration multipleRegistration
      * Returns the configuration object for this auto service registration.
      * This implementation always returns {@code null}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleAutoServiceRegistration autoReg = ...;
      * Object config = autoReg.getConfiguration(); // null
@@ -67,7 +67,7 @@ protected Object getConfiguration() {
      * Determines whether this auto service registration is enabled based on the
      * {@link AutoServiceRegistrationProperties}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleAutoServiceRegistration autoReg = ...;
      * boolean enabled = autoReg.isEnabled();
@@ -83,7 +83,7 @@ protected boolean isEnabled() {
     /**
      * Returns the {@link MultipleRegistration} managed by this auto service registration.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleAutoServiceRegistration autoReg = ...;
      * MultipleRegistration registration = autoReg.getRegistration();
@@ -100,7 +100,7 @@ protected MultipleRegistration getRegistration() {
      * Returns the management {@link MultipleRegistration}, which is the same as
      * the primary registration in this implementation.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleAutoServiceRegistration autoReg = ...;
      * MultipleRegistration mgmtRegistration = autoReg.getManagementRegistration();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleRegistration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleRegistration.java
index 8d0caa10..60b33795 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleRegistration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleRegistration.java
@@ -34,7 +34,7 @@ public class MultipleRegistration implements Registration {
      * {@link Registration} instances. The last registration in the collection becomes
      * the default registration.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * DefaultRegistration registration = new DefaultRegistration();
      * registration.setServiceId("test-service");
@@ -59,7 +59,7 @@ public MultipleRegistration(Collection registrations) {
     /**
      * Returns the instance ID from the default {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * String instanceId = multipleRegistration.getInstanceId();
@@ -75,7 +75,7 @@ public String getInstanceId() {
     /**
      * Returns the service ID from the default {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * String serviceId = multipleRegistration.getServiceId();
@@ -91,7 +91,7 @@ public String getServiceId() {
     /**
      * Returns the host from the default {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * String host = multipleRegistration.getHost();
@@ -107,7 +107,7 @@ public String getHost() {
     /**
      * Returns the port from the default {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * int port = multipleRegistration.getPort();
@@ -123,7 +123,7 @@ public int getPort() {
     /**
      * Returns whether the default {@link Registration} is secure.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * boolean secure = multipleRegistration.isSecure();
@@ -139,7 +139,7 @@ public boolean isSecure() {
     /**
      * Returns the {@link URI} from the default {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * URI uri = multipleRegistration.getUri();
@@ -156,7 +156,7 @@ public URI getUri() {
      * Returns the aggregated {@link RegistrationMetaData} that synchronizes metadata
      * across all underlying {@link Registration} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * Map metadata = multipleRegistration.getMetadata();
@@ -173,7 +173,7 @@ public Map getMetadata() {
      * Returns the default {@link Registration} instance, which is the last registration
      * provided during construction.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * Registration defaultReg = multipleRegistration.getDefaultRegistration();
@@ -189,7 +189,7 @@ public Registration getDefaultRegistration() {
      * Retrieves a specific {@link Registration} by its class type. If the specified
      * class is {@link Registration} itself, returns this {@link MultipleRegistration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleRegistration multipleRegistration = new MultipleRegistration(registrations);
      * DefaultRegistration specific = multipleRegistration.special(DefaultRegistration.class);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleServiceRegistry.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleServiceRegistry.java
index cee447a2..5c33726b 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleServiceRegistry.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/MultipleServiceRegistry.java
@@ -42,7 +42,7 @@ public class MultipleServiceRegistry implements ServiceRegistryExample Usage:
+     * 

Example Usage

*
{@code
      * ServiceRegistry simpleRegistry = new InMemoryServiceRegistry();
      * MultipleServiceRegistry registry =
@@ -72,7 +72,7 @@ public MultipleServiceRegistry(Map registriesMap) {
      * Registers the given {@link MultipleRegistration} by delegating to each underlying
      * {@link ServiceRegistry} with the corresponding specific {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleServiceRegistry registry = new MultipleServiceRegistry(registriesMap);
      * MultipleRegistration registration = new MultipleRegistration(registrations);
@@ -90,7 +90,7 @@ public void register(MultipleRegistration registration) {
      * Deregisters the given {@link MultipleRegistration} by delegating to each underlying
      * {@link ServiceRegistry} with the corresponding specific {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleServiceRegistry registry = new MultipleServiceRegistry(registriesMap);
      * MultipleRegistration registration = new MultipleRegistration(registrations);
@@ -108,7 +108,7 @@ public void deregister(MultipleRegistration registration) {
     /**
      * Closes all underlying {@link ServiceRegistry} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleServiceRegistry registry = new MultipleServiceRegistry(registriesMap);
      * registry.close();
@@ -123,7 +123,7 @@ public void close() {
      * Sets the status of the given {@link MultipleRegistration} by delegating to each
      * underlying {@link ServiceRegistry} with the corresponding specific {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleServiceRegistry registry = new MultipleServiceRegistry(registriesMap);
      * registry.register(registration);
@@ -156,7 +156,7 @@ private void iterate(Consumer action) {
      * Retrieves the status of the given {@link MultipleRegistration} from the default
      * {@link ServiceRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * MultipleServiceRegistry registry = new MultipleServiceRegistry(registriesMap);
      * registry.register(registration);
@@ -180,7 +180,7 @@ public  T getStatus(MultipleRegistration registration) {
      * using generic type resolution. Falls back to {@code SpringFactoriesLoader} when the
      * generic type resolves to {@link Registration} itself.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Class regClass =
      *     MultipleServiceRegistry.getRegistrationClass(NacosServiceRegistry.class);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/RegistrationMetaData.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/RegistrationMetaData.java
index b7aba497..ea32ad09 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/RegistrationMetaData.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/RegistrationMetaData.java
@@ -21,7 +21,7 @@
  * {@link Registration} objects and ensures that any metadata modifications (put, remove, clear)
  * are propagated to every registration in a thread-safe manner.
  *
- * 

Example Usage: + *

Example Usage

*
{@code
  * RegistrationMetaData metaData = new RegistrationMetaData(ofList(defaultRegistration));
  * metaData.put("key", "value");
@@ -59,7 +59,7 @@ public final class RegistrationMetaData implements Map {
      * collection of {@link Registration} instances. Metadata changes are synchronized across
      * all registrations.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * DefaultRegistration registration = new DefaultRegistration();
      * registration.getMetadata().put("key1", "value1");
@@ -90,7 +90,7 @@ public RegistrationMetaData(Collection registrations) {
     /**
      * Returns the number of metadata entries.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * int count = metaData.size(); // e.g. 3
@@ -106,7 +106,7 @@ public int size() {
     /**
      * Returns whether this metadata map is empty.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * boolean empty = metaData.isEmpty(); // false if registrations have metadata
@@ -122,7 +122,7 @@ public boolean isEmpty() {
     /**
      * Returns whether this metadata contains the specified key.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * boolean hasKey = metaData.containsKey("key1"); // true
@@ -140,7 +140,7 @@ public boolean containsKey(Object key) {
     /**
      * Returns whether this metadata contains the specified value.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * boolean hasValue = metaData.containsValue("value1"); // true
@@ -158,7 +158,7 @@ public boolean containsValue(Object value) {
     /**
      * Returns the metadata value associated with the specified key.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * String value = metaData.get("key1"); // "value1"
@@ -177,7 +177,7 @@ public String get(Object key) {
      * Puts a metadata entry and synchronizes it across all underlying {@link Registration}
      * instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * metaData.put("key4", "value4");
@@ -202,7 +202,7 @@ public String put(String key, String value) {
      * Removes the metadata entry for the specified key and synchronizes the removal
      * across all underlying {@link Registration} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * metaData.remove("key1");
@@ -226,7 +226,7 @@ public String remove(Object key) {
      * Copies all entries from the specified map into this metadata and synchronizes
      * them across all underlying {@link Registration} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * metaData.putAll(Map.of("key4", "value4", "key5", "value5"));
@@ -248,7 +248,7 @@ public void putAll(Map m) {
      * Clears all metadata entries and synchronizes the clearing across all underlying
      * {@link Registration} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * metaData.clear();
@@ -266,7 +266,7 @@ public void clear() {
     /**
      * Returns an unmodifiable {@link Set} view of the metadata keys.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * Set keys = metaData.keySet();
@@ -283,7 +283,7 @@ public Set keySet() {
     /**
      * Returns an unmodifiable {@link Collection} view of the metadata values.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * Collection values = metaData.values();
@@ -302,7 +302,7 @@ public Collection values() {
      * {@link #keySet()} and {@link #values()}, the returned set is not wrapped
      * in an unmodifiable view.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationMetaData metaData = new RegistrationMetaData(registrations);
      * Set> entries = metaData.entrySet();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleAutoServiceRegistration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleAutoServiceRegistration.java
index 6e4c8534..52003a93 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleAutoServiceRegistration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleAutoServiceRegistration.java
@@ -39,7 +39,7 @@ public class SimpleAutoServiceRegistration extends AbstractAutoServiceRegistrati
      * {@link ServiceRegistry}, {@link AutoServiceRegistrationProperties}, and
      * {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * InMemoryServiceRegistry serviceRegistry = new InMemoryServiceRegistry();
      * AutoServiceRegistrationProperties properties = new AutoServiceRegistrationProperties();
@@ -62,7 +62,7 @@ public SimpleAutoServiceRegistration(ServiceRegistry serviceRegist
     /**
      * Returns the {@link AutoServiceRegistrationProperties} as the configuration object.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleAutoServiceRegistration autoReg = ...;
      * Object config = autoReg.getConfiguration();
@@ -79,7 +79,7 @@ protected Object getConfiguration() {
      * Determines whether this auto service registration is enabled based on the
      * {@link AutoServiceRegistrationProperties}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleAutoServiceRegistration autoReg = ...;
      * boolean enabled = autoReg.isEnabled();
@@ -95,7 +95,7 @@ protected boolean isEnabled() {
     /**
      * Returns the {@link Registration} managed by this auto service registration.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleAutoServiceRegistration autoReg = ...;
      * Registration registration = autoReg.getRegistration();
@@ -112,7 +112,7 @@ protected Registration getRegistration() {
      * Returns the management {@link Registration}, which is the same as the primary
      * registration in this implementation.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleAutoServiceRegistration autoReg = ...;
      * Registration mgmtRegistration = autoReg.getManagementRegistration();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleServiceRegistry.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleServiceRegistry.java
index 429bad2d..bec9fd59 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleServiceRegistry.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/SimpleServiceRegistry.java
@@ -52,7 +52,7 @@ public class SimpleServiceRegistry implements ServiceRegistryExample Usage:
+     * 

Example Usage

*
{@code
      * SimpleDiscoveryProperties properties = new SimpleDiscoveryProperties();
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
@@ -68,7 +68,7 @@ public SimpleServiceRegistry(SimpleDiscoveryProperties properties) {
      * Constructs a new {@link SimpleServiceRegistry} using the given
      * {@link SimpleReactiveDiscoveryProperties} to obtain the instances map.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleReactiveDiscoveryProperties reactiveProperties = ...;
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(reactiveProperties);
@@ -83,7 +83,7 @@ public SimpleServiceRegistry(SimpleReactiveDiscoveryProperties properties) {
     /**
      * Constructs a new {@link SimpleServiceRegistry} with the given instances map.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Map> instancesMap = new HashMap<>();
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(instancesMap);
@@ -99,7 +99,7 @@ public SimpleServiceRegistry(Map> instances
      * Registers the given {@link DefaultRegistration} by adding it to the instances list
      * for its service ID.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * DefaultRegistration registration = new DefaultRegistration();
@@ -119,7 +119,7 @@ public void register(DefaultRegistration registration) {
      * Deregisters the given {@link DefaultRegistration} by removing it from the instances
      * list for its service ID.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * registry.register(registration);
@@ -137,7 +137,7 @@ public void deregister(DefaultRegistration registration) {
     /**
      * Closes this registry. This implementation is a no-op.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * registry.close();
@@ -151,7 +151,7 @@ public void close() {
      * Sets the status of the given {@link DefaultRegistration} by storing it in the
      * registration's metadata under the {@link #STATUS_KEY} key.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * registry.register(registration);
@@ -169,7 +169,7 @@ public void setStatus(DefaultRegistration registration, String status) {
     /**
      * Retrieves the status of the given {@link DefaultRegistration} from its metadata.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * registry.register(registration);
@@ -189,7 +189,7 @@ public String getStatus(DefaultRegistration registration) {
      * Returns the list of {@link DefaultServiceInstance} instances for the given
      * {@link DefaultRegistration}'s service ID.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * registry.register(registration);
@@ -207,7 +207,7 @@ List getInstances(DefaultRegistration registration) {
      * Returns the list of {@link DefaultServiceInstance} instances for the given service ID,
      * creating an empty list if none exists.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * SimpleServiceRegistry registry = new SimpleServiceRegistry(properties);
      * List instances = registry.getInstances("test-service");
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/actuate/autoconfigure/ServiceRegistrationEndpointAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/actuate/autoconfigure/ServiceRegistrationEndpointAutoConfiguration.java
index 531fc200..6649349a 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/actuate/autoconfigure/ServiceRegistrationEndpointAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/actuate/autoconfigure/ServiceRegistrationEndpointAutoConfiguration.java
@@ -52,7 +52,7 @@ public class ServiceRegistrationEndpointAutoConfiguration {
     /**
      * Creates a {@link ServiceRegistrationEndpoint} bean for managing service registration via actuator.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // The endpoint is auto-configured and accessible at /actuator/serviceRegistration
      * @Autowired
@@ -72,7 +72,7 @@ public ServiceRegistrationEndpoint serviceRegistrationEndpoint() {
     /**
      * Creates a {@link ServiceDeregistrationEndpoint} bean for managing service deregistration via actuator.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // The endpoint is auto-configured and accessible at /actuator/serviceDeregistration
      * @Autowired
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/aspect/EventPublishingRegistrationAspect.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/aspect/EventPublishingRegistrationAspect.java
index c455ba1d..5c58ed80 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/aspect/EventPublishingRegistrationAspect.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/aspect/EventPublishingRegistrationAspect.java
@@ -63,7 +63,7 @@ public class EventPublishingRegistrationAspect implements ApplicationContextAwar
      * AOP advice executed before {@link ServiceRegistry#register(Registration)}, publishing a
      * {@link RegistrationPreRegisteredEvent} and applying {@link RegistrationCustomizer customizations}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // This advice is triggered automatically when ServiceRegistry.register() is called:
      * serviceRegistry.register(registration);
@@ -89,7 +89,7 @@ public void beforeRegister(ServiceRegistry registry, Registration registration)
      * AOP advice executed before {@link ServiceRegistry#deregister(Registration)}, publishing a
      * {@link RegistrationPreDeregisteredEvent}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // This advice is triggered automatically when ServiceRegistry.deregister() is called:
      * serviceRegistry.deregister(registration);
@@ -112,7 +112,7 @@ public void beforeDeregister(ServiceRegistry registry, Registration registration
      * AOP advice executed after {@link ServiceRegistry#register(Registration)}, publishing a
      * {@link RegistrationRegisteredEvent}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // This advice is triggered automatically after ServiceRegistry.register() completes:
      * serviceRegistry.register(registration);
@@ -135,7 +135,7 @@ public void afterRegister(ServiceRegistry registry, Registration registration) {
      * AOP advice executed after {@link ServiceRegistry#deregister(Registration)}, publishing a
      * {@link RegistrationDeregisteredEvent}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // This advice is triggered automatically after ServiceRegistry.deregister() completes:
      * serviceRegistry.deregister(registration);
@@ -162,7 +162,7 @@ boolean isIgnored(ServiceRegistry registry) {
      * Sets the {@link ApplicationContext} used to publish registration events and
      * to look up {@link RegistrationCustomizer} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Called automatically by Spring's ApplicationContextAware callback:
      * aspect.setApplicationContext(applicationContext);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/ServiceRegistryAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/ServiceRegistryAutoConfiguration.java
index 9eb53ecc..6fb9ee2b 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/ServiceRegistryAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/ServiceRegistryAutoConfiguration.java
@@ -59,7 +59,7 @@ static class MultipleConfiguration {
          * Creates a primary {@link MultipleRegistration} bean that aggregates all available
          * {@link Registration} instances.
          *
-         * 

Example Usage: + *

Example Usage

*
{@code
          * @Autowired
          * MultipleRegistration multipleRegistration;
@@ -80,7 +80,7 @@ public MultipleRegistration multipleRegistration(Collection regist
          * Creates a primary {@link MultipleServiceRegistry} bean that delegates to all available
          * {@link ServiceRegistry} instances.
          *
-         * 

Example Usage: + *

Example Usage

*
{@code
          * @Autowired
          * MultipleServiceRegistry multipleServiceRegistry;
@@ -102,7 +102,7 @@ public MultipleServiceRegistry multipleServiceRegistry(MapExample Usage:
+         * 

Example Usage

*
{@code
          * @Autowired
          * MultipleAutoServiceRegistration autoRegistration;
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java
index 362a890f..80437363 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java
@@ -83,7 +83,7 @@ public class SimpleAutoServiceRegistrationAutoConfiguration {
     /**
      * Creates a {@link Registration} bean from the application name, server properties, and network info.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Auto-configured via Spring Boot; the bean is available for injection:
      * @Autowired
@@ -117,7 +117,7 @@ public Registration registration(
     /**
      * Creates an {@link InMemoryServiceRegistry} bean as the default {@link ServiceRegistry} implementation.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Auto-configured when no other ServiceRegistry bean is present:
      * @Autowired
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebFluxServiceRegistryAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebFluxServiceRegistryAutoConfiguration.java
index 088b222b..a3e1756e 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebFluxServiceRegistryAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebFluxServiceRegistryAutoConfiguration.java
@@ -41,7 +41,7 @@ public class WebFluxServiceRegistryAutoConfiguration extends WebServiceRegistryA
      * Returns an empty string as the context path for WebFlux applications,
      * since reactive applications do not have a servlet context path.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WebFluxServiceRegistryAutoConfiguration config = new WebFluxServiceRegistryAutoConfiguration();
      * String contextPath = config.getContextPath(); // returns ""
@@ -58,7 +58,7 @@ protected String getContextPath() {
      * Always returns {@code false} for WebFlux applications, indicating that no
      * {@link WebEndpointMapping} is excluded from registration metadata.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean excluded = config.isExcludedMapping(mapping, patterns); // always false
      * }
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebMvcServiceRegistryAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebMvcServiceRegistryAutoConfiguration.java index dd4021d7..fe2c417e 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebMvcServiceRegistryAutoConfiguration.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebMvcServiceRegistryAutoConfiguration.java @@ -66,7 +66,7 @@ public class WebMvcServiceRegistryAutoConfiguration extends WebServiceRegistryAu * Returns the servlet context path configured via the {@code server.servlet.context-path} * property for Spring WebMVC applications. * - *

Example Usage: + *

Example Usage

*
{@code
      * // With server.servlet.context-path=/api
      * String contextPath = config.getContextPath(); // returns "/api"
@@ -84,7 +84,7 @@ protected String getContextPath() {
      * registration metadata. A mapping is excluded if it corresponds to a built-in
      * Spring {@link Filter} registration or a {@link DispatcherServletRegistrationBean} mapping.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean excluded = config.isExcludedMapping(mapping, new String[]{"/*"});
      * // returns true if the mapping matches a built-in filter or DispatcherServlet
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebServiceRegistryAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebServiceRegistryAutoConfiguration.java
index 48ec8a94..0ec5baac 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebServiceRegistryAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/WebServiceRegistryAutoConfiguration.java
@@ -51,7 +51,7 @@ public abstract class WebServiceRegistryAutoConfiguration implements Application
      * Handles {@link WebEndpointMappingsReadyEvent} by attaching web endpoint mapping metadata
      * to all available {@link Registration} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // This listener is invoked automatically by the Spring event system:
      * // When WebEndpointMappingsReadyEvent is published, metadata is attached
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java
index c9737de9..fab9ce98 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java
@@ -51,7 +51,7 @@ public abstract class AbstractServiceRegistrationEndpoint implements SmartInitia
      * 

Initializes the {@link Registration}, {@link ServiceRegistry}, and * {@link AbstractAutoServiceRegistration} from available bean providers. * - *

Example Usage: + *

Example Usage

*
{@code
      * // Called automatically by the Spring container after all singletons are instantiated.
      * // Ensures registration, serviceRegistry, and serviceRegistration fields are populated.
@@ -69,7 +69,7 @@ public void afterSingletonsInstantiated() {
      * 

Captures the web server port and detects the running state of the * {@link AbstractAutoServiceRegistration}. * - *

Example Usage: + *

Example Usage

*
{@code
      * // Called automatically when the embedded web server has been initialized.
      * // After this event, the port and running state are available.
@@ -87,7 +87,7 @@ public void onApplicationEvent(WebServerInitializedEvent event) {
     /**
      * Detects whether the given {@link AbstractAutoServiceRegistration} is currently running.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean running = AbstractServiceRegistrationEndpoint.detectRunning(serviceRegistration);
      * }
@@ -102,7 +102,7 @@ static boolean detectRunning(AbstractAutoServiceRegistration serviceRegistration /** * Returns whether the service registration is currently running. * - *

Example Usage: + *

Example Usage

*
{@code
      * if (endpoint.isRunning()) {
      *     // service is registered and running
@@ -118,7 +118,7 @@ protected boolean isRunning() {
     /**
      * Sets the running state of the service registration.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * endpoint.setRunning(true);  // mark service as running
      * endpoint.setRunning(false); // mark service as stopped
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceDeregistrationEndpoint.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceDeregistrationEndpoint.java
index 84b0e481..cc09376f 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceDeregistrationEndpoint.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceDeregistrationEndpoint.java
@@ -19,7 +19,7 @@ public class ServiceDeregistrationEndpoint extends AbstractServiceRegistrationEn
      * Deregisters the service from the {@link ServiceRegistry} if it is currently running.
      * This is a write operation exposed via the {@code /actuator/serviceDeregistration} endpoint.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Via actuator HTTP POST to /actuator/serviceDeregistration
      * ServiceDeregistrationEndpoint endpoint = context.getBean(ServiceDeregistrationEndpoint.class);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceRegistrationEndpoint.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceRegistrationEndpoint.java
index 52054ab5..05c5c18a 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceRegistrationEndpoint.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/ServiceRegistrationEndpoint.java
@@ -27,7 +27,7 @@ public class ServiceRegistrationEndpoint extends AbstractServiceRegistrationEndp
      * registration details, port, status, and running state.
      * This is a read operation exposed via the {@code /actuator/serviceRegistration} endpoint.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Via actuator HTTP GET to /actuator/serviceRegistration
      * ServiceRegistrationEndpoint endpoint = context.getBean(ServiceRegistrationEndpoint.class);
@@ -57,7 +57,7 @@ public Map metadata() {
      * Registers the service with the {@link ServiceRegistry} if it is not already running.
      * This is a write operation exposed via the {@code /actuator/serviceRegistration} endpoint.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Via actuator HTTP POST to /actuator/serviceRegistration
      * ServiceRegistrationEndpoint endpoint = context.getBean(ServiceRegistrationEndpoint.class);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationDeregisteredEvent.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationDeregisteredEvent.java
index 45ef54ce..f66b5d53 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationDeregisteredEvent.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationDeregisteredEvent.java
@@ -34,7 +34,7 @@ public class RegistrationDeregisteredEvent extends RegistrationEvent {
      * Create a new {@link RegistrationDeregisteredEvent} indicating that a
      * {@link Registration} has been deregistered from the {@link ServiceRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServiceRegistry registry = ...;
      * Registration registration = ...;
@@ -52,7 +52,7 @@ public RegistrationDeregisteredEvent(ServiceRegistry registry, Reg
     /**
      * Returns the {@link Type} of this event, which is always {@link Type#DEREGISTERED}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationDeregisteredEvent event = ...;
      * RegistrationEvent.Type type = event.getType();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationEvent.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationEvent.java
index b084e76b..00ed6a2a 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationEvent.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationEvent.java
@@ -45,7 +45,7 @@ public abstract class RegistrationEvent extends ApplicationEvent {
     /**
      * Create a new {@link RegistrationEvent} with the given {@link ServiceRegistry} and {@link Registration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServiceRegistry registry = ...;
      * Registration registration = ...;
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreDeregisteredEvent.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreDeregisteredEvent.java
index b98fc529..6ecf6958 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreDeregisteredEvent.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreDeregisteredEvent.java
@@ -34,7 +34,7 @@ public class RegistrationPreDeregisteredEvent extends RegistrationEvent {
      * Create a new {@link RegistrationPreDeregisteredEvent} indicating that a
      * {@link Registration} is about to be deregistered from the {@link ServiceRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServiceRegistry registry = ...;
      * Registration registration = ...;
@@ -52,7 +52,7 @@ public RegistrationPreDeregisteredEvent(ServiceRegistry registry,
     /**
      * Returns the {@link Type} of this event, which is always {@link Type#PRE_DEREGISTERED}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationPreDeregisteredEvent event = ...;
      * RegistrationEvent.Type type = event.getType();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreRegisteredEvent.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreRegisteredEvent.java
index 8ae5c353..300901e5 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreRegisteredEvent.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationPreRegisteredEvent.java
@@ -34,7 +34,7 @@ public class RegistrationPreRegisteredEvent extends RegistrationEvent {
      * Create a new {@link RegistrationPreRegisteredEvent} indicating that a
      * {@link Registration} is about to be registered with the {@link ServiceRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServiceRegistry registry = ...;
      * Registration registration = ...;
@@ -52,7 +52,7 @@ public RegistrationPreRegisteredEvent(ServiceRegistry registry, Re
     /**
      * Returns the {@link Type} of this event, which is always {@link Type#PRE_REGISTERED}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationPreRegisteredEvent event = ...;
      * RegistrationEvent.Type type = event.getType();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationRegisteredEvent.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationRegisteredEvent.java
index 42932dc7..4bbb3e54 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationRegisteredEvent.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/event/RegistrationRegisteredEvent.java
@@ -34,7 +34,7 @@ public class RegistrationRegisteredEvent extends RegistrationEvent {
      * Create a new {@link RegistrationRegisteredEvent} indicating that a
      * {@link Registration} has been registered with the {@link ServiceRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServiceRegistry registry = ...;
      * Registration registration = ...;
@@ -52,7 +52,7 @@ public RegistrationRegisteredEvent(ServiceRegistry registry, Regis
     /**
      * Returns the {@link Type} of this event, which is always {@link Type#REGISTERED}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * RegistrationRegisteredEvent event = ...;
      * RegistrationEvent.Type type = event.getType();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/util/ServiceInstanceUtils.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/util/ServiceInstanceUtils.java
index cb8ba81d..569a9c29 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/util/ServiceInstanceUtils.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/util/ServiceInstanceUtils.java
@@ -70,7 +70,7 @@ public class ServiceInstanceUtils extends BaseUtils {
      * The web endpoint mappings are serialized as JSON and stored in the service instance's
      * metadata under the {@link io.microsphere.spring.cloud.client.service.registry.constants.InstanceConstants#WEB_MAPPINGS_METADATA_NAME} key.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServiceInstance serviceInstance = new DefaultServiceInstance("id", "service", "localhost", 8080, false);
      * Collection mappings = new ArrayList<>();
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/loadbalancer/WeightedRoundRobin.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/loadbalancer/WeightedRoundRobin.java
index b2991743..f2739b21 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/loadbalancer/WeightedRoundRobin.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/loadbalancer/WeightedRoundRobin.java
@@ -22,7 +22,7 @@ public class WeightedRoundRobin {
     /**
      * Create a new {@link WeightedRoundRobin} instance with the given identifier.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setWeight(5);
@@ -37,7 +37,7 @@ public WeightedRoundRobin(String id) {
     /**
      * Get the unique identifier for this {@link WeightedRoundRobin} entry.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * String id = wrr.getId(); // "server-1"
@@ -52,7 +52,7 @@ public String getId() {
     /**
      * Get the current weight of this {@link WeightedRoundRobin} entry.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setWeight(5);
@@ -68,7 +68,7 @@ public int getWeight() {
     /**
      * Set the weight for this {@link WeightedRoundRobin} entry and reset the current counter.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setWeight(10);
@@ -85,7 +85,7 @@ public void setWeight(int weight) {
      * Increase the current counter by the weight value and return the updated value.
      * Used during weighted round-robin selection to accumulate the weight for this entry.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setWeight(5);
@@ -104,7 +104,7 @@ public long increaseCurrent() {
      * Subtract the total weight from the current counter after this entry has been selected.
      * This is part of the weighted round-robin algorithm to reduce the selected entry's counter.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setWeight(5);
@@ -121,7 +121,7 @@ public void sel(int total) {
     /**
      * Get the timestamp of the last update to this {@link WeightedRoundRobin} entry.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setLastUpdate(System.currentTimeMillis());
@@ -137,7 +137,7 @@ public long getLastUpdate() {
     /**
      * Set the timestamp of the last update to this {@link WeightedRoundRobin} entry.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setLastUpdate(System.currentTimeMillis());
@@ -153,7 +153,7 @@ public void setLastUpdate(long lastUpdate) {
      * Returns a string representation of this {@link WeightedRoundRobin} including
      * its id, weight, current counter, and last update timestamp.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * WeightedRoundRobin wrr = new WeightedRoundRobin("server-1");
      * wrr.setWeight(5);
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/autoconfigure/TomcatFaultToleranceAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/autoconfigure/TomcatFaultToleranceAutoConfiguration.java
index b32ad811..0910a502 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/autoconfigure/TomcatFaultToleranceAutoConfiguration.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/autoconfigure/TomcatFaultToleranceAutoConfiguration.java
@@ -76,7 +76,7 @@ public class TomcatFaultToleranceAutoConfiguration {
      * Handles the {@link WebServerInitializedEvent} to register a {@link TomcatDynamicConfigurationListener}
      * when the embedded web server is a {@link TomcatWebServer}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Automatically invoked by Spring when WebServerInitializedEvent is published.
      * // The listener is registered as an ApplicationListener on the web application context.
diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/event/TomcatDynamicConfigurationListener.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/event/TomcatDynamicConfigurationListener.java
index b3adeb6e..0bbb1e78 100644
--- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/event/TomcatDynamicConfigurationListener.java
+++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/fault/tolerance/tomcat/event/TomcatDynamicConfigurationListener.java
@@ -72,7 +72,7 @@ public class TomcatDynamicConfigurationListener implements ApplicationListenerExample Usage:
+     * 

Example Usage

*
{@code
      * TomcatWebServer tomcatWebServer = ...;
      * ServerProperties serverProperties = ...;
@@ -107,7 +107,7 @@ private void initCurrentServerProperties() {
      * Handles an {@link EnvironmentChangeEvent} by reconfiguring the Tomcat connector
      * if any server-related properties have changed.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Automatically invoked by Spring when an EnvironmentChangeEvent is published.
      * // Reconfigures Tomcat settings such as thread pool size, connection timeout, etc.
@@ -186,7 +186,7 @@ private void configureConnector(ServerProperties refreshableServerProperties) {
      * Configure the Tomcat {@link AbstractProtocol} settings such as thread pool sizes,
      * accept count, connection timeout, and max connections from the refreshed {@link ServerProperties}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServerProperties refreshedProperties = ...;
      * ProtocolHandler protocolHandler = connector.getProtocolHandler();
@@ -248,7 +248,7 @@ void configureProtocol(ServerProperties refreshableServerProperties, ProtocolHan
      * Configure the Tomcat {@link AbstractHttp11Protocol} settings such as max HTTP header size,
      * max swallow size, and max HTTP form POST size from the refreshed {@link ServerProperties}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * ServerProperties refreshedProperties = ...;
      * Connector connector = tomcatWebServer.getTomcat().getConnector();
@@ -305,7 +305,7 @@ private int toIntBytes(DataSize dataSize) {
     /**
      * Check whether the given integer value is positive (greater than zero).
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean result = listener.isPositive(10);  // true
      * boolean result2 = listener.isPositive(0);  // false
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignAutoConfiguration.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignAutoConfiguration.java
index d7addf0f..a7c32fa1 100644
--- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignAutoConfiguration.java
+++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignAutoConfiguration.java
@@ -26,7 +26,7 @@ public class FeignAutoConfiguration {
      * Creates a {@link FeignBuilderCustomizer} that adds the {@link NoOpRequestInterceptor}
      * as a default request interceptor to every Feign client builder.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Automatically registered as a Spring bean; customizes every Feign builder
      * FeignBuilderCustomizer customizer = addDefaultRequestInterceptorCustomizer();
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignClientAutoRefreshAutoConfiguration.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignClientAutoRefreshAutoConfiguration.java
index 2bba37a2..6a9be6d5 100644
--- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignClientAutoRefreshAutoConfiguration.java
+++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autoconfigure/FeignClientAutoRefreshAutoConfiguration.java
@@ -27,7 +27,7 @@ public class FeignClientAutoRefreshAutoConfiguration {
      * Handles the {@link ApplicationReadyEvent} to register the
      * {@link FeignClientConfigurationChangedListener} after the application is fully initialized.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Invoked automatically by the Spring event system on application ready
      * onApplicationReadyEvent(applicationReadyEvent);
@@ -47,7 +47,7 @@ public void onApplicationReadyEvent(ApplicationReadyEvent event) {
      * Creates the {@link FeignComponentRegistry} bean that tracks decorated Feign components
      * and supports auto-refresh when configuration properties change.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Automatically registered as a Spring bean
      * FeignComponentRegistry registry = feignClientRegistry(clientProperties, beanFactory);
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/AutoRefreshCapability.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/AutoRefreshCapability.java
index 75800fd3..c9eac6a0 100644
--- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/AutoRefreshCapability.java
+++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/AutoRefreshCapability.java
@@ -42,7 +42,7 @@ public class AutoRefreshCapability implements Capability, ApplicationContextAwar
      * Constructs a new {@link AutoRefreshCapability} with the required dependencies
      * for enriching Feign components with auto-refresh support.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * AutoRefreshCapability capability =
      *     new AutoRefreshCapability(clientProperties, feignContext, componentRegistry);
@@ -62,7 +62,7 @@ public AutoRefreshCapability(FeignClientProperties clientProperties, FeignContex
      * Sets the {@link ApplicationContext} and resolves the Feign client context ID
      * from the environment property {@code feign.client.name}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Invoked automatically by Spring's ApplicationContextAware mechanism
      * capability.setApplicationContext(applicationContext);
@@ -80,7 +80,7 @@ public void setApplicationContext(ApplicationContext applicationContext) throws
      * Enriches the given {@link Retryer} by wrapping it in a {@link DecoratedRetryer}
      * that supports auto-refresh, and registers it with the {@link FeignComponentRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Retryer enriched = capability.enrich(Retryer.NEVER_RETRY);
      * }
@@ -104,7 +104,7 @@ public Retryer enrich(Retryer retryer) { * Enriches the given {@link Contract} by wrapping it in a {@link DecoratedContract} * that supports auto-refresh, and registers it with the {@link FeignComponentRegistry}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Contract enriched = capability.enrich(new SpringMvcContract());
      * }
@@ -128,7 +128,7 @@ public Contract enrich(Contract contract) { * Enriches the given {@link Decoder} by wrapping it in a {@link DecoratedDecoder} * that supports auto-refresh, and registers it with the {@link FeignComponentRegistry}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Decoder enriched = capability.enrich(new ResponseEntityDecoder(decoder));
      * }
@@ -152,7 +152,7 @@ public Decoder enrich(Decoder decoder) { * Enriches the given {@link Encoder} by wrapping it in a {@link DecoratedEncoder} * that supports auto-refresh, and registers it with the {@link FeignComponentRegistry}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Encoder enriched = capability.enrich(new SpringEncoder(messageConverters));
      * }
@@ -176,7 +176,7 @@ public Encoder enrich(Encoder encoder) { * Enriches the given {@link ErrorDecoder} by wrapping it in a {@link DecoratedErrorDecoder} * that supports auto-refresh, and registers it with the {@link FeignComponentRegistry}. * - *

Example Usage: + *

Example Usage

*
{@code
      * ErrorDecoder enriched = capability.enrich(new ErrorDecoder.Default());
      * }
@@ -199,7 +199,7 @@ public ErrorDecoder enrich(ErrorDecoder decoder) { * Enriches the given {@link RequestInterceptor} by registering it with the * {@link FeignComponentRegistry} as part of a {@link io.microsphere.spring.cloud.openfeign.components.CompositedRequestInterceptor}. * - *

Example Usage: + *

Example Usage

*
{@code
      * RequestInterceptor enriched = capability.enrich(template -> template.header("X-Custom", "value"));
      * }
@@ -219,7 +219,7 @@ public RequestInterceptor enrich(RequestInterceptor requestInterceptor) { * Enriches the given {@link QueryMapEncoder} by wrapping it in a {@link DecoratedQueryMapEncoder} * that supports auto-refresh, and registers it with the {@link FeignComponentRegistry}. * - *

Example Usage: + *

Example Usage

*
{@code
      * QueryMapEncoder enriched = capability.enrich(new BeanQueryMapEncoder());
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignClientConfigurationChangedListener.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignClientConfigurationChangedListener.java index 94313702..89c79255 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignClientConfigurationChangedListener.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignClientConfigurationChangedListener.java @@ -18,7 +18,7 @@ public class FeignClientConfigurationChangedListener implements ApplicationListe /** * Constructs a listener that refreshes Feign components when the environment changes. * - *

Example Usage: + *

Example Usage

*
{@code
      * FeignComponentRegistry registry = ...;
      * FeignClientConfigurationChangedListener listener =
@@ -38,7 +38,7 @@ public FeignClientConfigurationChangedListener(FeignComponentRegistry registry)
      * have changed (based on property keys prefixed with {@code feign.client.config.}) and
      * triggering a refresh on the corresponding clients via the {@link FeignComponentRegistry}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * // Triggered automatically when environment properties change:
      * // context.publishEvent(new EnvironmentChangeEvent(context, changedKeys));
@@ -58,7 +58,7 @@ public void onApplicationEvent(EnvironmentChangeEvent event) {
      * Resolves which Feign client names and their changed configuration keys are affected
      * by the given {@link EnvironmentChangeEvent}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Map> changed = listener.resolveChangedClient(event);
      * // e.g. {"my-client" -> {"retryer", "decoder"}}
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignComponentRegistry.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignComponentRegistry.java
index 1471cc76..84a0efd3 100644
--- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignComponentRegistry.java
+++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/autorefresh/FeignComponentRegistry.java
@@ -63,7 +63,7 @@ public class FeignComponentRegistry {
     /**
      * Returns the Feign component class corresponding to the given configuration key.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Class componentClass = FeignComponentRegistry.getComponentClass("retryer");
      * // returns Retryer.class
@@ -84,7 +84,7 @@ protected static Class getComponentClass(String config) {
      * Normalizes a configuration key by stripping array index suffixes and converting
      * to dashed form.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * String normalized = FeignComponentRegistry.normalizeConfig("requestInterceptors[0]");
      * // returns "request-interceptors"
@@ -102,7 +102,7 @@ static String normalizeConfig(String config) {
      * Constructs a {@link FeignComponentRegistry} with the given default client name
      * and {@link BeanFactory}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * FeignComponentRegistry registry = new FeignComponentRegistry("default", beanFactory);
      * }
@@ -118,7 +118,7 @@ public FeignComponentRegistry(String defaultClientName, BeanFactory beanFactory) /** * Registers a list of {@link Refreshable} components for the specified Feign client. * - *

Example Usage: + *

Example Usage

*
{@code
      * List components = List.of(decoratedContract, decoratedDecoder);
      * registry.register("my-client", components);
@@ -138,7 +138,7 @@ public void register(String clientName, List components) {
     /**
      * Registers a single {@link Refreshable} component for the specified Feign client.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * registry.register("my-client", decoratedContract);
      * }
@@ -154,7 +154,7 @@ public void register(String clientName, Refreshable component) { * Registers a {@link RequestInterceptor} for the specified Feign client. Interceptors * are collected into a {@link CompositedRequestInterceptor} per client. * - *

Example Usage: + *

Example Usage

*
{@code
      * RequestInterceptor interceptor = template -> template.header("X-Custom", "value");
      * RequestInterceptor result = registry.registerRequestInterceptor("my-client", interceptor);
@@ -178,7 +178,7 @@ public RequestInterceptor registerRequestInterceptor(String clientName, RequestI
     /**
      * Refreshes the Feign components for the specified client whose configurations have changed.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * registry.refresh("my-client", "retryer", "decoder");
      * }
@@ -195,7 +195,7 @@ public void refresh(String clientName, String... changedConfigs) { * configuration keys. If the default client configuration changed, all registered * components are refreshed. * - *

Example Usage: + *

Example Usage

*
{@code
      * Set changed = Set.of("my-client.retryer", "my-client.decoder");
      * registry.refresh("my-client", changed);
@@ -247,7 +247,7 @@ public synchronized void refresh(String clientName, Set changedConfigs)
      * Checks whether the given {@link Refreshable} component's class is assignable from
      * any of the effective component classes.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean present = FeignComponentRegistry.isComponentPresent(
      *     refreshableComponent, List.of(Retryer.class, Decoder.class));
@@ -264,7 +264,7 @@ static boolean isComponentPresent(Refreshable component, Iterable> effe
     /**
      * Checks whether the given class is assignable from any of the effective component classes.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean present = FeignComponentRegistry.isComponentClassPresent(
      *     DecoratedRetryer.class, List.of(Retryer.class));
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/CompositedRequestInterceptor.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/CompositedRequestInterceptor.java
index 240f05c3..b45089cf 100644
--- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/CompositedRequestInterceptor.java
+++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/CompositedRequestInterceptor.java
@@ -36,7 +36,7 @@ public class CompositedRequestInterceptor implements RequestInterceptor, Refresh
     /**
      * Constructs a {@link CompositedRequestInterceptor} for the specified Feign client context.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * CompositedRequestInterceptor interceptor =
      *     new CompositedRequestInterceptor("my-client", beanFactory);
@@ -53,7 +53,7 @@ public CompositedRequestInterceptor(String contextId, BeanFactory beanFactory) {
     /**
      * Returns an unmodifiable view of the registered {@link RequestInterceptor} instances.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Set interceptors = compositedInterceptor.getRequestInterceptors();
      * }
@@ -68,7 +68,7 @@ public Set getRequestInterceptors() { * Applies all registered {@link RequestInterceptor} instances to the given * {@link RequestTemplate} in order. This method is thread-safe. * - *

Example Usage: + *

Example Usage

*
{@code
      * RequestTemplate template = new RequestTemplate();
      * compositedInterceptor.apply(template);
@@ -88,7 +88,7 @@ public void apply(RequestTemplate template) {
      * is the first interceptor added (i.e., the set was previously empty), {@code false} otherwise.
      * This method is thread-safe.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * boolean wasFirst = compositedInterceptor.addRequestInterceptor(
      *     template -> template.header("Authorization", "Bearer token"));
@@ -114,7 +114,7 @@ private RequestInterceptor getInterceptorOrInstantiate(ClassExample Usage:
+     * 

Example Usage

*
{@code
      * compositedInterceptor.refresh();
      * }
@@ -172,7 +172,7 @@ public void refresh() { * Adds all elements from the source collection (obtained via the supplier) into the * target collection if the source is not empty. * - *

Example Usage: + *

Example Usage

*
{@code
      * Collection target = new ArrayList<>();
      * addAll(() -> List.of("a", "b"), target);
@@ -193,7 +193,7 @@ static  void addAll(Supplier> sourceSupplier, Collection tar
      * Retrieves a bean of the given type from the {@link BeanFactory}, falling back to
      * instantiation via the default constructor if the bean is not available.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * FeignClientProperties properties = getOrInstantiate(FeignClientProperties.class);
      * }
@@ -211,7 +211,7 @@ T getOrInstantiate(Class clazz) { * Puts all entries from the source map (obtained via the supplier) into the target * map if the source is not empty, without overwriting existing keys. * - *

Example Usage: + *

Example Usage

*
{@code
      * Map target = new HashMap<>();
      * putIfAbsent(() -> Map.of("key", "value"), target);
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedContract.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedContract.java
index ce8b22be..3641d390 100644
--- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedContract.java
+++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedContract.java
@@ -23,7 +23,7 @@ public DecoratedContract(String contextId, FeignContext feignContext, FeignClien
      * Returns the {@link Contract} implementation class to use when reloading
      * the delegate after a refresh, as configured in {@link FeignClientConfiguration}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedContract.componentType();
      * }
@@ -40,7 +40,7 @@ protected Class componentType() { * Parses and validates the metadata for the given target type by delegating * to the underlying {@link Contract} implementation. * - *

Example Usage: + *

Example Usage

*
{@code
      * List metadata = decoratedContract.parseAndValidateMetadata(MyFeignClient.class);
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedDecoder.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedDecoder.java index 6150c008..b3b9b711 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedDecoder.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedDecoder.java @@ -26,7 +26,7 @@ public DecoratedDecoder(String contextId, FeignContext feignContext, FeignClient * Returns the {@link Decoder} implementation class to use when reloading * the delegate after a refresh, as configured in {@link FeignClientConfiguration}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedDecoder.componentType();
      * }
@@ -43,7 +43,7 @@ protected Class componentType() { * Decodes the given {@link Response} into an object of the specified type by * delegating to the underlying {@link Decoder} implementation. * - *

Example Usage: + *

Example Usage

*
{@code
      * Object result = decoratedDecoder.decode(response, MyDto.class);
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedEncoder.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedEncoder.java index a1b1a78e..a3b7c7f1 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedEncoder.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedEncoder.java @@ -25,7 +25,7 @@ public DecoratedEncoder(String contextId, FeignContext feignContext, FeignClient * Returns the {@link Encoder} implementation class to use when reloading * the delegate after a refresh, as configured in {@link FeignClientConfiguration}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedEncoder.componentType();
      * }
@@ -42,7 +42,7 @@ protected Class componentType() { * Encodes the given object into the {@link RequestTemplate} body by delegating * to the underlying {@link Encoder} implementation. * - *

Example Usage: + *

Example Usage

*
{@code
      * decoratedEncoder.encode(myDto, MyDto.class, requestTemplate);
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedErrorDecoder.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedErrorDecoder.java index 8e010bbe..41cdd120 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedErrorDecoder.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedErrorDecoder.java @@ -21,7 +21,7 @@ public DecoratedErrorDecoder(String contextId, FeignContext feignContext, FeignC * Returns the {@link ErrorDecoder} implementation class to use when reloading * the delegate after a refresh, as configured in {@link FeignClientConfiguration}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedErrorDecoder.componentType();
      * }
@@ -38,7 +38,7 @@ protected Class componentType() { * Decodes an error {@link Response} into an {@link Exception} by delegating * to the underlying {@link ErrorDecoder} implementation. * - *

Example Usage: + *

Example Usage

*
{@code
      * Exception ex = decoratedErrorDecoder.decode("MyClient#myMethod()", response);
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedFeignComponent.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedFeignComponent.java index 74f4538c..5173b6f4 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedFeignComponent.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedFeignComponent.java @@ -35,7 +35,7 @@ public abstract class DecoratedFeignComponent implements Refreshable { /** * Constructs a new {@link DecoratedFeignComponent} wrapping the given delegate. * - *

Example Usage: + *

Example Usage

*
{@code
      * // Typically invoked via a subclass constructor:
      * DecoratedDecoder decoder = new DecoratedDecoder(contextId, feignContext, clientProperties, originalDecoder);
@@ -57,7 +57,7 @@ public DecoratedFeignComponent(String contextId, FeignContext feignContext, Feig
      * Returns the current delegate instance. If the delegate has been cleared (e.g., after
      * a refresh), a new instance is loaded from the {@link FeignContext}.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Decoder actual = decoratedDecoder.delegate();
      * }
@@ -78,7 +78,7 @@ public T delegate() { * Loads a component instance of the given type from the {@link NamedContextFactory}, * falling back to direct instantiation if the bean is not available. * - *

Example Usage: + *

Example Usage

*
{@code
      * Decoder decoder = decoratedFeignComponent.loadInstanceFromContextFactory("my-client", Decoder.class);
      * }
@@ -97,7 +97,7 @@ public T loadInstanceFromContextFactory(String contextId, Class component /** * Returns the Feign client context identifier associated with this component. * - *

Example Usage: + *

Example Usage

*
{@code
      * String id = decoratedComponent.contextId();
      * }
@@ -113,7 +113,7 @@ public String contextId() { * Refreshes this component by clearing the current delegate. The next call to * {@link #delegate()} will reload a fresh instance from the {@link FeignContext}. * - *

Example Usage: + *

Example Usage

*
{@code
      * decoratedComponent.refresh();
      * }
@@ -129,7 +129,7 @@ public void refresh() { * Returns the Feign component type class used to resolve the delegate implementation. * Subclasses must implement this to return the appropriate configuration class. * - *

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedFeignComponent.componentType();
      * }
@@ -142,7 +142,7 @@ public void refresh() { * Returns the default {@link FeignClientConfiguration} for this Feign client, * as specified by the default config name in {@link FeignClientProperties}. * - *

Example Usage: + *

Example Usage

*
{@code
      * FeignClientConfiguration defaultConfig = decoratedComponent.getDefaultConfiguration();
      * }
@@ -156,7 +156,7 @@ public FeignClientConfiguration getDefaultConfiguration() { /** * Returns the {@link FeignClientConfiguration} for the current Feign client context. * - *

Example Usage: + *

Example Usage

*
{@code
      * FeignClientConfiguration currentConfig = decoratedComponent.getCurrentConfiguration();
      * }
@@ -186,7 +186,7 @@ protected T get(Function configurationFunction) * Loads a fresh instance of the Feign component from the {@link FeignContext} using * the {@link #componentType()} and {@link #contextId()}. * - *

Example Usage: + *

Example Usage

*
{@code
      * T freshInstance = decoratedComponent.loadInstance();
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedQueryMapEncoder.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedQueryMapEncoder.java index 61c69ee0..5101adfa 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedQueryMapEncoder.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedQueryMapEncoder.java @@ -22,7 +22,7 @@ public DecoratedQueryMapEncoder(String contextId, FeignContext feignContext, Fei * Returns the {@link QueryMapEncoder} implementation class to use when reloading * the delegate after a refresh. Defaults to {@link PageableSpringQueryMapEncoder}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedQueryMapEncoder.componentType();
      * }
@@ -38,7 +38,7 @@ protected Class componentType() { * Encodes the given object into a query parameter map by delegating to the * underlying {@link QueryMapEncoder} implementation. * - *

Example Usage: + *

Example Usage

*
{@code
      * Map queryParams = decoratedQueryMapEncoder.encode(myQueryObject);
      * }
diff --git a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedRetryer.java b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedRetryer.java index d3534725..d3705d68 100644 --- a/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedRetryer.java +++ b/microsphere-spring-cloud-openfeign/src/main/java/io/microsphere/spring/cloud/openfeign/components/DecoratedRetryer.java @@ -21,7 +21,7 @@ public DecoratedRetryer(String contextId, FeignContext feignContext, FeignClient * Returns the {@link Retryer} implementation class to use when reloading * the delegate after a refresh, as configured in {@link FeignClientConfiguration}. * - *

Example Usage: + *

Example Usage

*
{@code
      * Class type = decoratedRetryer.componentType();
      * }
@@ -38,7 +38,7 @@ protected Class componentType() { * Continues or propagates the given {@link RetryableException} by delegating * to the underlying {@link Retryer} implementation. * - *

Example Usage: + *

Example Usage

*
{@code
      * try {
      *     decoratedRetryer.continueOrPropagate(retryableException);
@@ -64,7 +64,7 @@ static void continueOrPropagate(Retryer retryer, RetryableException e) {
      * Clones the underlying {@link Retryer} delegate to produce a fresh copy for
      * each request invocation.
      *
-     * 

Example Usage: + *

Example Usage

*
{@code
      * Retryer cloned = decoratedRetryer.clone();
      * }
From 0e9131c761a28e1a3ed642155669b873c22fe3d6 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Sun, 5 Jul 2026 23:43:23 +0800 Subject: [PATCH 02/12] Unify spring app name placeholder constant Add `SPRING_APPLICATION_NAME_PLACEHOLDER` to `CommonsPropertyConstants` and reuse it in service registration wiring (`SimpleAutoServiceRegistrationAutoConfiguration` and `AbstractServiceRegistrationEndpoint`) instead of hardcoded `@Value` strings. This centralizes the placeholder and aligns the default application name fallback to `application`, with constants tests updated accordingly. --- .../SimpleAutoServiceRegistrationAutoConfiguration.java | 3 ++- .../endpoint/AbstractServiceRegistrationEndpoint.java | 3 ++- .../cloud/commons/constants/CommonsPropertyConstants.java | 7 +++++++ .../commons/constants/CommonsPropertyConstantsTest.java | 2 ++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java index 80437363..87888178 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/autoconfigure/SimpleAutoServiceRegistrationAutoConfiguration.java @@ -42,6 +42,7 @@ import static io.microsphere.annotation.ConfigurationProperty.APPLICATION_SOURCE; import static io.microsphere.spring.cloud.client.service.registry.autoconfigure.SimpleAutoServiceRegistrationAutoConfiguration.ENABLED_PROPERTY_NAME; import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.MICROSPHERE_SPRING_CLOUD_PROPERTY_NAME_PREFIX; +import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.SPRING_APPLICATION_NAME_PLACEHOLDER; /** * Auto-Configuration class for {@link SimpleAutoServiceRegistration} @@ -98,7 +99,7 @@ public class SimpleAutoServiceRegistrationAutoConfiguration { */ @Bean public Registration registration( - @Value("${spring.application.name:default}") String applicationName, + @Value(SPRING_APPLICATION_NAME_PLACEHOLDER) String applicationName, ServerProperties serverProperties, InetUtils inetUtils ) { diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java index fab9ce98..8c18d6d1 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/service/registry/endpoint/AbstractServiceRegistrationEndpoint.java @@ -13,6 +13,7 @@ import org.springframework.context.ApplicationListener; import static io.microsphere.logging.LoggerFactory.getLogger; +import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.SPRING_APPLICATION_NAME_PLACEHOLDER; /** * Abstract Endpoint for Service Registration @@ -24,7 +25,7 @@ public abstract class AbstractServiceRegistrationEndpoint implements SmartInitia protected final Logger logger = getLogger(getClass()); - @Value("${spring.application.name}") + @Value(SPRING_APPLICATION_NAME_PLACEHOLDER) protected String applicationName; @Autowired diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstants.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstants.java index b30fbe48..521ad034 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstants.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstants.java @@ -78,4 +78,11 @@ public interface CommonsPropertyConstants extends SpringCloudPropertyConstants { ) String COMPOSITE_REGISTRATION_ENABLED_PROPERTY_NAME = MICROSPHERE_SPRING_CLOUD_PROPERTY_NAME_PREFIX + "composite-registration." + ENABLED_PROPERTY_NAME; + /** + * The placeholder of Spring Application Name : ${spring.application.name:application} + * + * @see org.springframework.beans.factory.annotation.Value + */ + String SPRING_APPLICATION_NAME_PLACEHOLDER = "${spring.application.name:application}"; + } \ No newline at end of file diff --git a/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstantsTest.java b/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstantsTest.java index 66f7c52f..371ce471 100644 --- a/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstantsTest.java +++ b/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/commons/constants/CommonsPropertyConstantsTest.java @@ -27,6 +27,7 @@ import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.MULTIPLE_REGISTRATION_ENABLED_PROPERTY_NAME; import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.SERVICE_REGISTRY_AUTO_REGISTRATION_ENABLED_PROPERTY_NAME; import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.SERVICE_REGISTRY_PROPERTY_PREFIX; +import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.SPRING_APPLICATION_NAME_PLACEHOLDER; import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.SPRING_CLOUD_PROPERTY_PREFIX; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -51,5 +52,6 @@ void testConstants() { assertEquals("microsphere.spring.cloud.default-registration.type", MULTIPLE_REGISTRATION_DEFAULT_REGISTRATION_PROPERTY_NAME); assertEquals("microsphere.spring.cloud.default-service-registry.type", MULTIPLE_REGISTRATION_DEFAULT_REGISTRY_PROPERTY_NAME); assertEquals("microsphere.spring.cloud.composite-registration.enabled", COMPOSITE_REGISTRATION_ENABLED_PROPERTY_NAME); + assertEquals("${spring.application.name:application}", SPRING_APPLICATION_NAME_PLACEHOLDER); } } \ No newline at end of file From d9a8ba8f0ed18e0ab813ee10cdc9499e8be1c1b2 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Sun, 5 Jul 2026 23:46:27 +0800 Subject: [PATCH 03/12] Update README with latest branch versions Refresh the compatibility table in README.md to reflect the newest released versions: `main` to `0.2.22` and `1.x` to `0.1.22`. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f98d3909..3769d9f2 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,8 @@ Then declare only the modules you need (versions are managed by the BOM): | **Branch** | **Spring Cloud compatibility** | **Latest version** | |------------|----------------------------------------|--------------------| -| `main` | 2022.0.x, 2023.0.x, 2024.0.x, 2025.0.x | `0.2.21` | -| `1.x` | Hoxton, 2020.0.x, 2021.0.x | `0.1.21` | +| `main` | 2022.0.x, 2023.0.x, 2024.0.x, 2025.0.x | `0.2.22` | +| `1.x` | Hoxton, 2020.0.x, 2021.0.x | `0.1.22` | By default, the `main` branch builds against Spring Cloud 2025.0.x. To build or run tests against an older generation, activate the corresponding Maven profile: From 9c4fd799619737ca969471d4999cdb9a697fb022 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Mon, 6 Jul 2026 22:55:07 +0800 Subject: [PATCH 04/12] Bump microsphere-spring-boot to 0.1.29 Update the parent POM BOM property from 0.1.28 to 0.1.29 to align dependency management with the latest microsphere-spring-boot release. --- microsphere-spring-cloud-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsphere-spring-cloud-parent/pom.xml b/microsphere-spring-cloud-parent/pom.xml index e0f5bfa3..23c4b374 100644 --- a/microsphere-spring-cloud-parent/pom.xml +++ b/microsphere-spring-cloud-parent/pom.xml @@ -20,7 +20,7 @@ - 0.1.28 + 0.1.29 1.21.4 5.14.4 From 8a3ea4cfcf4585630d9b38accbe3510e38f2e071 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Mon, 6 Jul 2026 23:32:41 +0800 Subject: [PATCH 05/12] Refine Specification auto-config conditions Adjust Specification auto-configuration to activate only when NamedContextFactory is on the classpath, and create SpecificationBeanPostProcessor only when a Specification bean exists and no custom post-processor is already defined. Update commons module dependencies by marking microsphere-spring-boot-actuator optional and switching tests to microsphere-spring-boot-test. Refresh SpecificationAutoConfigurationTest to use AutoConfigurationTest support and cover missing-class behavior with the new conditions. --- microsphere-spring-cloud-commons/pom.xml | 7 +-- .../SpecificationAutoConfiguration.java | 8 +++- .../SpecificationAutoConfigurationTest.java | 43 ++++++++++++++----- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/microsphere-spring-cloud-commons/pom.xml b/microsphere-spring-cloud-commons/pom.xml index 74a74527..5aeecc32 100644 --- a/microsphere-spring-cloud-commons/pom.xml +++ b/microsphere-spring-cloud-commons/pom.xml @@ -20,7 +20,7 @@ - + io.github.microsphere-projects microsphere-spring-boot-webmvc @@ -34,6 +34,7 @@ io.github.microsphere-projects microsphere-spring-boot-actuator + true @@ -132,10 +133,10 @@ test - + io.github.microsphere-projects - microsphere-spring-test + microsphere-spring-boot-test test diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfiguration.java index d22b2856..3df719de 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfiguration.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfiguration.java @@ -17,9 +17,12 @@ package io.microsphere.spring.cloud.context.named.autoconfigure; +import io.microsphere.spring.cloud.context.named.SpecificationCustomizer; import io.microsphere.spring.cloud.context.named.config.SpecificationBeanPostProcessor; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.cloud.context.named.NamedContextFactory.Specification; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -30,10 +33,11 @@ * @author Mercy * @see Specification * @see SpecificationBeanPostProcessor + * @see SpecificationCustomizer * @since 1.0.0 */ @Configuration(proxyBeanMethods = false) -@ConditionalOnBean(value = Specification.class) +@ConditionalOnClass(name = "org.springframework.cloud.context.named.NamedContextFactory") @AutoConfigureAfter(name = { "org.springframework.cloud.loadbalancer.config.LoadBalancerAutoConfiguration", "org.springframework.cloud.openfeign.FeignAutoConfiguration" @@ -41,6 +45,8 @@ public class SpecificationAutoConfiguration { @Bean + @ConditionalOnBean(value = Specification.class) + @ConditionalOnMissingBean public SpecificationBeanPostProcessor specificationBeanPostProcessor() { return new SpecificationBeanPostProcessor(); } diff --git a/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfigurationTest.java b/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfigurationTest.java index 7d649ffa..eb1e94f2 100644 --- a/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfigurationTest.java +++ b/microsphere-spring-cloud-commons/src/test/java/io/microsphere/spring/cloud/context/named/autoconfigure/SpecificationAutoConfigurationTest.java @@ -17,16 +17,21 @@ package io.microsphere.spring.cloud.context.named.autoconfigure; +import io.microsphere.spring.boot.test.AutoConfigurationTest; import io.microsphere.spring.cloud.context.named.SpecificationCustomizer; import io.microsphere.spring.cloud.context.named.config.SpecificationBeanPostProcessor; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.context.named.NamedContextFactory; import org.springframework.cloud.context.named.NamedContextFactory.Specification; import org.springframework.context.annotation.Bean; +import java.util.Set; + import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE; /** * {@link SpecificationAutoConfiguration} Test @@ -36,10 +41,11 @@ * @since 1.0.0 */ @SpringBootTest( - classes = SpecificationAutoConfigurationTest.Config.class + classes = SpecificationAutoConfigurationTest.Config.class, + webEnvironment = NONE ) @EnableAutoConfiguration -class SpecificationAutoConfigurationTest implements Specification { +class SpecificationAutoConfigurationTest extends AutoConfigurationTest { @Autowired private SpecificationBeanPostProcessor specificationBeanPostProcessor; @@ -53,7 +59,21 @@ void testBeans() { assertNotNull(specificationCustomizer); } - static class Config { + @Override + protected void configureAutoConfiguredClasses(Set> autoConfiguredClasses) { + autoConfiguredClasses.add(SpecificationBeanPostProcessor.class); + } + + @Override + protected void configureGlobalDisabledPropertyValues(Set globalDisabledPropertyValues) { + } + + @Override + protected void configureGlobalMissingClasses(Set> globalMissingClasses) { + globalMissingClasses.add(NamedContextFactory.class); + } + + static class Config implements Specification { @Bean public static SpecificationCustomizer customizer() { @@ -62,15 +82,16 @@ public static SpecificationCustomizer customizer() { assertNotNull(name); }; } - } - @Override - public String getName() { - return "test"; - } + @Override + public String getName() { + return "test"; + } - @Override - public Class[] getConfiguration() { - return new Class[0]; + @Override + public Class[] getConfiguration() { + return new Class[0]; + } } + } \ No newline at end of file From ea95293163b518d77a3d3fc1b9e53309104e037a Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Mon, 6 Jul 2026 23:38:46 +0800 Subject: [PATCH 06/12] Adjust commons module Microsphere deps Updates `microsphere-spring-cloud-commons/pom.xml` to better align dependency roles: adds `microsphere-annotation-processor` (optional) and `microsphere-spring-boot-core`, and marks `microsphere-spring-boot-webmvc` and `microsphere-spring-boot-webflux` as optional. This reduces unnecessary transitive runtime coupling while keeping core support required. --- microsphere-spring-cloud-commons/pom.xml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/microsphere-spring-cloud-commons/pom.xml b/microsphere-spring-cloud-commons/pom.xml index 5aeecc32..730cadec 100644 --- a/microsphere-spring-cloud-commons/pom.xml +++ b/microsphere-spring-cloud-commons/pom.xml @@ -20,15 +20,29 @@ - + + + io.github.microsphere-projects + microsphere-annotation-processor + true + + + + + io.github.microsphere-projects + microsphere-spring-boot-core + + io.github.microsphere-projects microsphere-spring-boot-webmvc + true io.github.microsphere-projects microsphere-spring-boot-webflux + true @@ -36,7 +50,7 @@ microsphere-spring-boot-actuator true - + org.springframework.boot From 1da4d7d5f22b785b86dd0ce872c10249efb57aac Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Mon, 6 Jul 2026 23:43:25 +0800 Subject: [PATCH 07/12] Normalize whitespace in commons POM Clean up formatting in `microsphere-spring-cloud-commons/pom.xml` by removing extra trailing whitespace on a blank line. This is a non-functional style-only change. --- microsphere-spring-cloud-commons/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsphere-spring-cloud-commons/pom.xml b/microsphere-spring-cloud-commons/pom.xml index 730cadec..d23d81e8 100644 --- a/microsphere-spring-cloud-commons/pom.xml +++ b/microsphere-spring-cloud-commons/pom.xml @@ -50,7 +50,7 @@ microsphere-spring-boot-actuator true - + org.springframework.boot From 1b2f7d0e34765829cd4d36eb0369ac621948745a Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Tue, 7 Jul 2026 09:20:01 +0800 Subject: [PATCH 08/12] Bump microsphere-build to 0.3.6 Update the parent POM to use microsphere-build 0.3.6 so this project inherits the latest shared build configuration and dependency management. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 185de606..fb8b8bf1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.github.microsphere-projects microsphere-build - 0.3.5 + 0.3.6 4.0.0 From 29424878cb5ebac0617b68bd2d994993070c9d01 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Tue, 7 Jul 2026 10:41:12 +0800 Subject: [PATCH 09/12] Bump microsphere-build parent to 0.3.7 Updates the Maven parent POM version in `pom.xml` from `0.3.6` to `0.3.7` to align this project with the latest shared build configuration. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fb8b8bf1..bdb9e7a0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.github.microsphere-projects microsphere-build - 0.3.6 + 0.3.7 4.0.0 From 9ea116558abcb5acd38683f6cfd285775ddc0c1d Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Tue, 7 Jul 2026 20:13:11 +0800 Subject: [PATCH 10/12] Use Maven Wrapper in CI build step Update the GitHub Actions Maven build workflow to run `./mvnw` instead of `mvn`. This makes CI use the project-defined Maven version for more consistent and reproducible builds across environments. --- .github/workflows/maven-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index dc0a08e3..bfee3291 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -41,7 +41,7 @@ jobs: cache: maven - name: Build with Maven - run: mvn + run: ./mvnw --batch-mode --update-snapshots --file pom.xml From 1033366d13c7948d1b4be0190f9a6c3d63644bc4 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Tue, 7 Jul 2026 22:07:23 +0800 Subject: [PATCH 11/12] Bump microsphere-build parent to 0.3.8 Update the Maven parent POM version from 0.3.7 to 0.3.8 to pick up the latest shared build configuration and plugin/dependency management updates from microsphere-build. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bdb9e7a0..e06cc26b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.github.microsphere-projects microsphere-build - 0.3.7 + 0.3.8 4.0.0 From 8629a90951727974da266ea8b38809aea3d6d708 Mon Sep 17 00:00:00 2001 From: Mercy Ma Date: Tue, 7 Jul 2026 22:11:12 +0800 Subject: [PATCH 12/12] Use mvn in CI build workflow Update the Maven build step in `.github/workflows/maven-build.yml` to call `mvn` instead of `./mvnw`, aligning the workflow with the runner-provided Maven setup. --- .github/workflows/maven-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index bfee3291..dc0a08e3 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -41,7 +41,7 @@ jobs: cache: maven - name: Build with Maven - run: ./mvnw + run: mvn --batch-mode --update-snapshots --file pom.xml