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 c857d486fcd..60174667fbe 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 @@ -17,7 +17,6 @@ package org.springframework.boot.autoconfigure.h2; import java.sql.Connection; -import java.sql.SQLException; import javax.sql.DataSource; @@ -74,7 +73,7 @@ public class H2ConsoleAutoConfiguration { 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 dd8a06feb15..6d9b2d90c72 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,6 +17,7 @@ package org.springframework.boot.autoconfigure.h2; import java.sql.Connection; +import java.sql.SQLException; import javax.sql.DataSource; @@ -31,8 +32,12 @@ import org.springframework.boot.test.context.runner.WebApplicationContextRunner; 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.BDDMockito.given; +import static org.mockito.Mockito.mock; /** * Tests for {@link H2ConsoleAutoConfiguration} @@ -40,6 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Andy Wilkinson * @author Marten Deinum * @author Stephane Nicoll + * @author Shraddha Yeole */ class H2ConsoleAutoConfigurationTests { @@ -117,4 +123,23 @@ class H2ConsoleAutoConfigurationTests { }); } + @Test + void h2ConsoleShouldNotFailIfDatabaseConnectionFails() { + this.contextRunner.withUserConfiguration(CustomDataSourceConfiguration.class) + .withPropertyValues("spring.h2.console.enabled=true") + .run((context) -> assertThat(context.isRunning()).isTrue()); + } + + @Configuration(proxyBeanMethods = false) + static class CustomDataSourceConfiguration { + + @Bean + DataSource dataSource() throws SQLException { + DataSource dataSource = mock(DataSource.class); + given(dataSource.getConnection()).willThrow(IllegalStateException.class); + return dataSource; + } + + } + }