diff --git a/spring-modulith-observability/pom.xml b/spring-modulith-observability/pom.xml
index 90d3d9b1..b78cf6ba 100644
--- a/spring-modulith-observability/pom.xml
+++ b/spring-modulith-observability/pom.xml
@@ -77,6 +77,12 @@
true
+
+ io.micrometer
+ micrometer-core
+ true
+
+
io.zipkin.brave
brave
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/DefaultModulithObservationConvention.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/DefaultModulithObservationConvention.java
index e92e7df0..d42bb4b5 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/DefaultModulithObservationConvention.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/DefaultModulithObservationConvention.java
@@ -11,7 +11,7 @@ import org.springframework.modulith.observability.ModulithObservations.LowKeys;
* Default implementation of {@link ModulithObservationConvention}.
*
* @author Marcin Grzejszczak
- * @since 1.3
+ * @since 1.4
*/
public class DefaultModulithObservationConvention implements ModulithObservationConvention {
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEntryInterceptor.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEntryInterceptor.java
index d93086c6..f5462a8e 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEntryInterceptor.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEntryInterceptor.java
@@ -70,9 +70,10 @@ class ModuleEntryInterceptor implements MethodInterceptor {
ModulithObservationConvention custom, Environment environment) {
Assert.notNull(module, "ObservedModule must not be null!");
- Assert.notNull(observationRegistry, "Tracer must not be null!");
+ Assert.notNull(observationRegistry, "ObservationRegistry must not be null!");
- this.module = module; this.observationRegistry = observationRegistry;
+ this.module = module;
+ this.observationRegistry = observationRegistry;
this.customModulithObservationConvention = custom;
this.environment = environment;
}
@@ -115,7 +116,6 @@ class ModuleEntryInterceptor implements MethodInterceptor {
LOGGER.trace("Entering {} via {}.", module.getDisplayName(), invokedMethod);
- // TODO: Good name for metrics
ModulithContext modulithContext = new ModulithContext(module, invocation, environment);
var observation = Observation.createNotStarted(customModulithObservationConvention, DEFAULT,
() -> modulithContext, observationRegistry);
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEventListener.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEventListener.java
index a51ab7e0..bb3117ac 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEventListener.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleEventListener.java
@@ -15,9 +15,10 @@
*/
package org.springframework.modulith.observability;
+import io.micrometer.core.instrument.Counter;
+import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.observation.Observation.Event;
import io.micrometer.observation.ObservationRegistry;
-import io.micrometer.tracing.Tracer;
import java.util.function.Supplier;
@@ -35,20 +36,24 @@ public class ModuleEventListener implements ApplicationListener observationRegistry;
+ private final Supplier meterRegistry;
/**
- * Creates a new {@link ModuleEventListener} for the given {@link ApplicationModulesRuntime} and {@link Tracer}.
+ * Creates a new {@link ModuleEventListener} for the given {@link ApplicationModulesRuntime} and {@link ObservationRegistry} and {@link MeterRegistry}.
*
* @param runtime must not be {@literal null}.
* @param observationRegistrySupplier must not be {@literal null}.
*/
- public ModuleEventListener(ApplicationModulesRuntime runtime, Supplier observationRegistrySupplier) {
+ public ModuleEventListener(ApplicationModulesRuntime runtime, Supplier observationRegistrySupplier,
+ Supplier meterRegistrySupplier) {
Assert.notNull(runtime, "ApplicationModulesRuntime must not be null!");
- Assert.notNull(observationRegistrySupplier, "Tracer must not be null!");
+ Assert.notNull(observationRegistrySupplier, "ObservationRegistry must not be null!");
+ Assert.notNull(meterRegistrySupplier, "MeterRegistry must not be null!");
this.runtime = runtime;
this.observationRegistry = observationRegistrySupplier;
+ this.meterRegistry = meterRegistrySupplier;
}
/*
@@ -77,6 +82,14 @@ public class ModuleEventListener implements ApplicationListener {
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModule.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModule.java
index 096929ac..44a99baf 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModule.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModule.java
@@ -30,7 +30,7 @@ import org.springframework.modulith.core.ArchitecturallyEvidentType;
* Information about observed module.
*
* @author Oliver Drotbohm
- * @since 1.3
+ * @since 1.4
*/
public interface ObservedModule {
@@ -90,7 +90,7 @@ public interface ObservedModule {
* method invocation on a Spring bean.
*
* @param invocation must not be {@literal null}.
- * @since 1.3
+ * @since 1.4
*/
boolean isEventListenerInvocation(MethodInvocation invocation);
}
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModuleType.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModuleType.java
index 06658cc8..6cee98a2 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModuleType.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ObservedModuleType.java
@@ -35,7 +35,7 @@ import org.springframework.util.ReflectionUtils;
* Represents a type in an {@link ObservedModule}.
*
* @author Oliver Drotbohm
- * @since 1.3
+ * @since 1.4
*/
public class ObservedModuleType {
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/SpringDataRestModuleObservabilityBeanPostProcessor.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/SpringDataRestModuleObservabilityBeanPostProcessor.java
index da7623dd..c7c8cdf4 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/SpringDataRestModuleObservabilityBeanPostProcessor.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/SpringDataRestModuleObservabilityBeanPostProcessor.java
@@ -16,7 +16,6 @@
package org.springframework.modulith.observability;
import io.micrometer.observation.ObservationRegistry;
-import io.micrometer.tracing.Tracer;
import java.util.function.Supplier;
@@ -47,7 +46,7 @@ public class SpringDataRestModuleObservabilityBeanPostProcessor extends ModuleOb
/**
* Creates a new {@link SpringDataRestModuleObservabilityBeanPostProcessor} for the given {@link ApplicationModulesRuntime}
- * and {@link Tracer}.
+ * and {@link ObservationRegistry}.
*
* @param runtime must not be {@literal null}.
* @param observationRegistry must not be {@literal null}.
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/autoconfigure/ModuleObservabilityAutoConfiguration.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/autoconfigure/ModuleObservabilityAutoConfiguration.java
index f15f00e5..2254e43e 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/autoconfigure/ModuleObservabilityAutoConfiguration.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/autoconfigure/ModuleObservabilityAutoConfiguration.java
@@ -18,9 +18,9 @@ package org.springframework.modulith.observability.autoconfigure;
import brave.handler.MutableSpan;
import brave.handler.SpanHandler;
import brave.propagation.TraceContext;
+import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.observation.ObservationFilter;
import io.micrometer.observation.ObservationRegistry;
-import io.micrometer.tracing.Tracer;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
@@ -54,8 +54,8 @@ class ModuleObservabilityAutoConfiguration {
@Bean
static ModuleEventListener tracingModuleEventListener(ApplicationModulesRuntime runtime,
- ObjectProvider observationRegistry) {
- return new ModuleEventListener(runtime, observationRegistry::getObject);
+ ObjectProvider observationRegistry, ObjectProvider meterRegistry) {
+ return new ModuleEventListener(runtime, observationRegistry::getObject, meterRegistry::getObject);
}
// TODO: Have a custom thread pool for modulith