diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.java index 0fd3099629b7..2c279c8d9fee 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.java @@ -69,7 +69,7 @@ public ServletRegistrationBean h2Console(H2ConsoleProperties propert logger.info("H2 console available at '" + path + "'. Database available at '" + connection.getMetaData().getURL() + "'"); } - catch (SQLException ex) { + catch (Exception ex) { // Continue } }); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfigurationTests.java index 8f8d5075c186..704013bafd87 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfigurationTests.java @@ -17,11 +17,13 @@ package org.springframework.boot.autoconfigure.h2; import java.sql.Connection; +import java.sql.SQLException; import javax.sql.DataSource; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.BDDMockito; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanCreationException; @@ -31,8 +33,11 @@ import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; /** * Tests for {@link H2ConsoleAutoConfiguration} @@ -119,4 +124,25 @@ void dataSourceUrlIsLoggedWhenAvailable(CapturedOutput output) throws BeansExcep }); } + @Test + void testDataSource() { + this.contextRunner.withUserConfiguration(DataSourceAvailable.class) + .withPropertyValues("spring.h2.console.enabled=true").run((context) -> { + assertThat(context.isRunning()).isTrue(); + }); + } + + @Configuration(proxyBeanMethods = false) + static class DataSourceAvailable { + + @Bean + public DataSource dataSource() throws SQLException { + DataSource dataSource = mock(DataSource.class); + BDDMockito.when(dataSource.getConnection()).thenThrow(IllegalStateException.class); + return dataSource; + } + + } + + }