Spring Boot

Learn how to use Sentry's Spring Boot SDK.

There are two variants of Sentry available for Spring Boot. If you're using our Gradle plugin it will pick the right dependency for you. If you're manually adding the dependency and using Spring Boot 2, use sentry-spring-boot-starter (GitHub). If you're using Spring Boot 3, use sentry-spring-boot-starter-jakarta instead (GitHub).

Sentry's integration with Spring Boot supports Spring Boot 2.1.0 and above to report unhandled exceptions as well as release and registration of beans. If you're on an older version, use our legacy integration. The minimum version of Spring Boot supported by the Sentry WebFlux integration is, instead, 2.2.5.RELEASE.

The sentry-spring-boot-starter and sentry-spring-boot-starter-jakarta libraries enhance Sentry Spring to:

  • manage a fine-grained configuration using application.properties or application.yaml
  • automatically include the release when Spring Boot Git integration is configured
  • automatically register BeforeSendCallback, BeforeBreadcrumbCallback, EventProcessor, Integration beans

On this page, we get you up and running with Sentry's SDK.

Don't already have an account and Sentry project established? Head over to sentry.io, then return to this page.

Install

Sentry captures data by using an SDK within your application’s runtime.

Copied
plugins {
  id "io.sentry.jvm.gradle" version "5.12.1"
}

When running your application, please add our sentry-opentelemetry-agent to the java command.

Download the latest version of the sentry-opentelemetry-agent-8.23.0.jar from MavenCentral:

Copied
curl https://repo1.maven.org/maven2/io/sentry/sentry-opentelemetry-agent/8.23.0/sentry-opentelemetry-agent-8.23.0.jar -o sentry-opentelemetry-agent-8.23.0.jar

Then run your application with:

Copied
SENTRY_AUTO_INIT=false JAVA_TOOL_OPTIONS="-javaagent:sentry-opentelemetry-agent-8.23.0.jar" java -jar your-application.jar

Configure

Sentry's Spring Boot integration auto-configures sentry.in-app-packages property with the package where @SpringBootApplication or @SpringBootConfiguration annotated class is located.

Provide a sentry.dsn property using either application.properties or application.yml:

application.properties
Copied
sentry.dsn=https://examplePublicKey@o0.ingest.sentry.io/0
example-org / example-project
# Add data like request headers and IP for users, # see https://docs.sentry.io/platforms/java/guides/spring-boot/data-management/data-collected/ for more info sentry.send-default-pii=true # performance # Set traces_sample_rate to 1.0 to capture 100% # of transactions for tracing. # We recommend adjusting this value in production. sentry.traces-sample-rate=1.0 # performance

By default, only unhandled exceptions are sent to Sentry. This behavior can be tuned through configuring the sentry.exception-resolver-order property. For example, setting it to -2147483647 (the value of org.springframework.core.Ordered#HIGHEST_PRECEDENCE) ensures exceptions that have been handled by exception resolvers with higher order are sent to Sentry - including ones handled by @ExceptionHandler annotated methods.

application.properties
Copied
sentry.exception-resolver-order=-2147483647

We recommend using Sentry's Spring Boot integration with one of the logging framework integrations as they work together seamlessly. To use Sentry without Spring Boot, we recommend using the Sentry Spring integration.

Once this integration is configured you can also use Sentry’s static API, as shown on the usage page, to record breadcrumbs, set the current user, or manually send events, for example.

Verify

This snippet includes an intentional error, so you can test that everything is working as soon as you set it up.

Copied
import io.sentry.Sentry;

try {
  throw new Exception("This is a test.");
} catch (Exception e) {
  Sentry.captureException(e);
}

Learn more about manually capturing an error or message in our Usage documentation.

To view and resolve the recorded error, log into sentry.io and select your project. Clicking on the error's title will open a page where you can see detailed information and mark it as resolved.

Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").