diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cfc1ef44c..d9e3490feb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ - Add `enableScopePersistence` option to disable `PersistingScopeObserver` used for ANR reporting which may increase performance overhead. Defaults to `true` ([#3218](https://github.com/getsentry/sentry-java/pull/3218)) - When disabled, the SDK will not enrich ANRv2 events with scope data (e.g. breadcrumbs, user, tags, etc.) - Configurable defaults for Cron - MonitorConfig ([#3195](https://github.com/getsentry/sentry-java/pull/3195)) +- We now display a warning on startup if an incompatible version of Spring Boot is detected ([#3233](https://github.com/getsentry/sentry-java/pull/3233)) + - This should help notice a mismatching Sentry dependency, especially when upgrading a Spring Boot application ### Fixes diff --git a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentrySpringVersionChecker.java b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentrySpringVersionChecker.java new file mode 100644 index 0000000000..7fb6d1ce23 --- /dev/null +++ b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentrySpringVersionChecker.java @@ -0,0 +1,30 @@ +package io.sentry.spring.boot.jakarta; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.boot.SpringBootVersion; +import org.springframework.boot.context.event.ApplicationContextInitializedEvent; +import org.springframework.context.ApplicationListener; + +final class SentrySpringVersionChecker + implements ApplicationListener { + + private static final Log logger = LogFactory.getLog(SentrySpringVersionChecker.class); + + @Override + public void onApplicationEvent(ApplicationContextInitializedEvent event) { + + if (!SpringBootVersion.getVersion().startsWith("3")) { + logger.warn("############################### WARNING ###############################"); + logger.warn("## ##"); + logger.warn("## !Incompatible Spring Boot Version detected! ##"); + logger.warn("## Please see the sentry docs linked below ##"); + logger.warn("## Choose your Spring Boot version and ##"); + logger.warn("## install the matching dependency ##"); + logger.warn("## ##"); + logger.warn("## https://docs.sentry.io/platforms/java/guides/spring-boot/#install ##"); + logger.warn("## ##"); + logger.warn("#######################################################################"); + } + } +} diff --git a/sentry-spring-boot-jakarta/src/main/resources/META-INF/spring.factories b/sentry-spring-boot-jakarta/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..4002cb6ed5 --- /dev/null +++ b/sentry-spring-boot-jakarta/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.context.ApplicationListener=io.sentry.spring.boot.jakarta.SentrySpringVersionChecker diff --git a/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentrySpringVersionChecker.java b/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentrySpringVersionChecker.java new file mode 100644 index 0000000000..1cbcb4f090 --- /dev/null +++ b/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentrySpringVersionChecker.java @@ -0,0 +1,30 @@ +package io.sentry.spring.boot; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.boot.SpringBootVersion; +import org.springframework.boot.context.event.ApplicationContextInitializedEvent; +import org.springframework.context.ApplicationListener; + +final class SentrySpringVersionChecker + implements ApplicationListener { + + private static final Log logger = LogFactory.getLog(SentrySpringVersionChecker.class); + + @Override + public void onApplicationEvent(ApplicationContextInitializedEvent event) { + + if (!SpringBootVersion.getVersion().startsWith("2")) { + logger.warn("############################### WARNING ###############################"); + logger.warn("## ##"); + logger.warn("## !Incompatible Spring Boot Version detected! ##"); + logger.warn("## Please see the sentry docs linked below ##"); + logger.warn("## Choose your Spring Boot version and ##"); + logger.warn("## install the matching dependency ##"); + logger.warn("## ##"); + logger.warn("## https://docs.sentry.io/platforms/java/guides/spring-boot/#install ##"); + logger.warn("## ##"); + logger.warn("#######################################################################"); + } + } +} diff --git a/sentry-spring-boot/src/main/resources/META-INF/spring.factories b/sentry-spring-boot/src/main/resources/META-INF/spring.factories index 0d71d6cad7..9712f4b407 100644 --- a/sentry-spring-boot/src/main/resources/META-INF/spring.factories +++ b/sentry-spring-boot/src/main/resources/META-INF/spring.factories @@ -2,3 +2,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ io.sentry.spring.boot.SentryAutoConfiguration,\ io.sentry.spring.boot.SentryLogbackAppenderAutoConfiguration,\ io.sentry.spring.boot.SentryWebfluxAutoConfiguration + +org.springframework.context.ApplicationListener=io.sentry.spring.boot.SentrySpringVersionChecker