Skip to content

Commit 476fe6e

Browse files
committed
Stop configuring metrics if hibernate is not available
Closes gh-15317
1 parent 5f145ac commit 476fe6e

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/orm/jpa/HibernateMetricsAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import io.micrometer.core.instrument.MeterRegistry;
2525
import io.micrometer.core.instrument.binder.jpa.HibernateMetrics;
26+
import org.hibernate.SessionFactory;
2627

2728
import org.springframework.beans.factory.annotation.Autowired;
2829
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
@@ -46,7 +47,8 @@
4647
@Configuration
4748
@AutoConfigureAfter({ MetricsAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
4849
SimpleMetricsExportAutoConfiguration.class })
49-
@ConditionalOnClass({ EntityManagerFactory.class, MeterRegistry.class })
50+
@ConditionalOnClass({ EntityManagerFactory.class, SessionFactory.class,
51+
MeterRegistry.class })
5052
@ConditionalOnBean({ EntityManagerFactory.class, MeterRegistry.class })
5153
public class HibernateMetricsAutoConfiguration {
5254

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/orm/jpa/HibernateMetricsAutoConfigurationTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
3838
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
3939
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
40+
import org.springframework.boot.test.context.FilteredClassLoader;
4041
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
4142
import org.springframework.context.annotation.Bean;
4243
import org.springframework.context.annotation.Configuration;
@@ -53,6 +54,7 @@
5354
* Tests for {@link HibernateMetricsAutoConfiguration}.
5455
*
5556
* @author Rui Figueira
57+
* @author Stephane Nicoll
5658
*/
5759
public class HibernateMetricsAutoConfigurationTests {
5860

@@ -137,6 +139,19 @@ public void entityManagerFactoryInstrumentationIsDisabledIfNotHibernateSessionFa
137139
});
138140
}
139141

142+
@Test
143+
public void entityManagerFactoryInstrumentationIsDisabledIfHibernateIsNotAvailable() {
144+
this.contextRunner.withClassLoader(new FilteredClassLoader(SessionFactory.class))
145+
.withUserConfiguration(
146+
NonHibernateEntityManagerFactoryConfiguration.class)
147+
.run((context) -> {
148+
assertThat(context)
149+
.doesNotHaveBean(HibernateMetricsAutoConfiguration.class);
150+
MeterRegistry registry = context.getBean(MeterRegistry.class);
151+
assertThat(registry.find("hibernate.statements").meter()).isNull();
152+
});
153+
}
154+
140155
@Configuration
141156
static class BaseConfiguration {
142157

0 commit comments

Comments
 (0)