Spring

On this page, we get you up and running with Sentry's SDK, so that it will automatically report errors and exceptions in your application.

Install

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

Copied
<dependency>
    <groupId>io.sentry</groupId>
    <artifactId>sentry-spring</artifactId>
    <version>3.2.0</version>
</dependency>

For other dependency managers see the central Maven repository.

Configure

Configuration should happen as early as possible in your application's lifecycle.

The sentry-spring library provides @EnableSentry annotation that registers all required Spring beans. @EnableSentry can be placed on any class annotated with @Configuration including the main entry class in Spring Boot applications annotated with @SpringBootApplication.

Copied
import io.sentry.spring.EnableSentry;
// NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry
// project/dashboard
@EnableSentry(dsn = "https://examplePublicKey@o0.ingest.sentry.io/0")
@Configuration
class SentryConfiguration {
}

The DSN can be also provided through the system property sentry.dsn, environment variable SENTRY_DSN or the dsn property in sentry.properties file. See the configuration page for more details on external configuration.

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.

By default, every unhandled exception is sent to Sentry, even those captured with @ExceptionHandler annotated methods. This behavior can be tuned through configuring exceptionResolverOrder property on @EnableSentry annotation. For example, setting it to Ordered.LOWEST_PRECEDENCE makes sure only exceptions that have not been handled by exception resolvers with higher order are sent to Sentry.

Copied
import io.sentry.spring.EnableSentry;
import org.springframework.core.Ordered;
// NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry
// project/dashboard
@EnableSentry(
  dsn = "https://examplePublicKey@o0.ingest.sentry.io/0",
  exceptionResolverOrder = Ordered.LOWEST_PRECEDENCE
)

Verify

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

Copied
import java.lang.Exception;
import io.sentry.Sentry;

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

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

You can edit this page on GitHub.