Getting started with the Spring Boot starter
Note
You can also use the Java agent to instrument your Spring Boot application. For the pros and cons, see Java zero-code instrumentation.Compatibility
The OpenTelemetry Spring Boot starter works with Spring Boot 2.0 and 3.0, and Spring Boot native image applications. The opentelemetry-java-examples/spring-native repository contains an example of a Spring Boot Native image application instrumented using the OpenTelemetry Spring Boot starter.
Dependency management
A Bill of Material (BOM) ensures that versions of dependencies (including transitive ones) are aligned.
Importing the opentelemetry-bom
and opentelemetry-instrumentation-bom-alpha
BOMs when using the OpenTelemetry starter is important to ensure version
alignment across all OpenTelemetry dependencies.
The following example shows how to import both BOMs using Maven:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-bom</artifactId>
<version>1.38.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-bom-alpha</artifactId>
<version>2.4.0-alpha</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
With Gradle and Spring Boot, you have two ways to import a BOM.
You can use the Gradle’s native BOM support by adding dependencies
:
import org.springframework.boot.gradle.plugin.SpringBootPlugin
plugins {
id("java")
id("org.springframework.boot") version "3.2.O"
}
dependencies {
implementation(platform(SpringBootPlugin.BOM_COORDINATES))
implementation(platform("io.opentelemetry:opentelemetry-bom:1.38.0"))
implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.4.0-alpha"))
}
The other way with Gradle is to use the io.spring.dependency-management
plugin
and to import the BOMs in dependencyManagement
:
plugins {
id("java")
id("org.springframework.boot") version "3.2.O"
id("io.spring.dependency-management") version "1.1.0"
}
dependencyManagement {
imports {
mavenBom("io.opentelemetry:opentelemetry-bom:1.38.0")
mavenBom("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.4.0-alpha")
}
}
Note
Be careful not to mix up the different ways of configuring things with Gradle. For example, don’t useimplementation(platform("io.opentelemetry:opentelemetry-bom:1.38.0"))
with the io.spring.dependency-management
plugin.OpenTelemetry Starter dependency
Add the dependency given below to enable the OpenTelemetry starter.
The OpenTelemetry starter uses OpenTelemetry Spring Boot autoconfiguration.
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
</dependency>
</dependencies>
dependencies {
implementation("io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter")
}