Skip to content

Commit 478306d

Browse files
committed
Update spring-boot-actuator-autoconfigure for spring boot 4
1 parent 9ea03e9 commit 478306d

File tree

4 files changed

+23
-9
lines changed

4 files changed

+23
-9
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,21 @@ 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+
testLibrary("org.springframework.boot:spring-boot-starter-micrometer-metrics:4.0.0")
24+
}
25+
2026
implementation(project(":instrumentation:micrometer:micrometer-1.5:javaagent"))
2127

2228
// dependency management pins logback-classic to 1.3 which is the last release that supports java 8
2329
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
2630
}
2731

2832
tasks.withType<Test>().configureEach {
@@ -33,8 +37,6 @@ tasks.withType<Test>().configureEach {
3337
jvmArgs("-Dotel.instrumentation.spring-boot-actuator-autoconfigure.enabled=true")
3438
}
3539

36-
val latestDepTest = findProperty("testLatestDeps") as Boolean
37-
3840
// spring 6 (spring boot 3) requires java 17
3941
if (latestDepTest) {
4042
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: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ 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+
"org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration")
43+
|| configurations.contains(
44+
"org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration")) {
4345
List<String> configs = new ArrayList<>(configurations.size() + 1);
4446
configs.addAll(configurations);
4547
// 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: 12 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,21 @@
2725

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

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ignore/AdditionalLibraryIgnoredTypesConfigurer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ public void configure(IgnoredTypesBuilder builder) {
112112
.allowClass(
113113
"org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter$$Lambda")
114114
.allowClass("org.springframework.boot.autoconfigure.BackgroundPreinitializer$")
115+
.allowClass(
116+
"org.springframework.boot.autoconfigure.preinitialize.BackgroundPreinitializingApplicationListener$")
115117
.allowClass(
116118
"org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration$$Lambda")
117119
.allowClass("org.springframework.boot.autoconfigure.condition.OnClassCondition$")

0 commit comments

Comments
 (0)