Skip to content

Commit ad260dc

Browse files
authored
Update spring-boot-actuator-autoconfigure for spring boot 4 (#15433)
1 parent 82ac13e commit ad260dc

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

instrumentation/spring/spring-boot-actuator-autoconfigure-2.0/javaagent/build.gradle.kts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,22 @@ muzzle {
1212
}
1313
}
1414

15+
val latestDepTest = findProperty("testLatestDeps") as Boolean
16+
1517
dependencies {
1618
library("org.springframework.boot:spring-boot-actuator-autoconfigure:2.0.0.RELEASE")
1719
library("io.micrometer:micrometer-core:1.5.0")
1820
testLibrary("io.micrometer:micrometer-registry-prometheus:1.0.1")
1921

22+
if (latestDepTest) {
23+
// Micrometer moved into its own Spring Boot starter in version 4
24+
testLibrary("org.springframework.boot:spring-boot-starter-micrometer-metrics:4.0.0")
25+
}
26+
2027
implementation(project(":instrumentation:micrometer:micrometer-1.5:javaagent"))
2128

2229
// dependency management pins logback-classic to 1.3 which is the last release that supports java 8
2330
latestDepTestLibrary("ch.qos.logback:logback-classic:latest.release")
24-
// tests don't work with spring boot 4 yet
25-
latestDepTestLibrary("org.springframework.boot:spring-boot-actuator-autoconfigure:3.+") // documented limitation
2631
}
2732

2833
tasks.withType<Test>().configureEach {
@@ -33,8 +38,6 @@ tasks.withType<Test>().configureEach {
3338
jvmArgs("-Dotel.instrumentation.spring-boot-actuator-autoconfigure.enabled=true")
3439
}
3540

36-
val latestDepTest = findProperty("testLatestDeps") as Boolean
37-
3841
// spring 6 (spring boot 3) requires java 17
3942
if (latestDepTest) {
4043
otelJava {

instrumentation/spring/spring-boot-actuator-autoconfigure-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/actuator/v2_0/AutoConfigurationImportSelectorInstrumentation.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ public static class GetCandidateConfigurationsAdvice {
3939
public static List<String> onExit(@Advice.Return List<String> originalConfigurations) {
4040
List<String> configurations = originalConfigurations;
4141
if (configurations.contains(
42-
"org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration")) {
42+
// Spring Boot 2.x-3.x location
43+
"org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration")
44+
|| configurations.contains(
45+
// Spring Boot 4.x location
46+
"org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration")) {
4347
List<String> configs = new ArrayList<>(configurations.size() + 1);
4448
configs.addAll(configurations);
4549
// using class reference here so that muzzle will consider it a dependency of this advice

instrumentation/spring/spring-boot-actuator-autoconfigure-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/actuator/v2_0/OpenTelemetryMeterRegistryAutoConfiguration.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
import java.util.List;
1717
import java.util.Set;
1818
import org.springframework.beans.factory.config.BeanPostProcessor;
19-
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
20-
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2119
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
2220
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
2321
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -27,11 +25,19 @@
2725

2826
@Configuration
2927
// CompositeMeterRegistryAutoConfiguration configures the "final" composite registry
30-
@AutoConfigureBefore(CompositeMeterRegistryAutoConfiguration.class)
28+
@AutoConfigureBefore(
29+
name = {
30+
"org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration", // Spring Boot 2.x-3.x location
31+
"org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" // Spring Boot 4.x location
32+
})
3133
// configure after the SimpleMeterRegistry has initialized; it is normally the last MeterRegistry
3234
// implementation to be configured, as it's used as a fallback
3335
// the OTel registry should be added in addition to that fallback and not replace it
34-
@AutoConfigureAfter(SimpleMetricsExportAutoConfiguration.class)
36+
@AutoConfigureAfter(
37+
name = {
38+
"org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration", // Spring Boot 2.x-3.x location
39+
"org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" // Spring Boot 4.x location
40+
})
3541
@ConditionalOnBean(Clock.class)
3642
@ConditionalOnClass(MeterRegistry.class)
3743
public class OpenTelemetryMeterRegistryAutoConfiguration {

0 commit comments

Comments
 (0)