假设我有一个spring-boot应用程序,它具有starter-JPA依赖关系,我需要知道spring在启动时是否检查到数据库的连接?
例如,如果我提到了一个我没有访问权限的数据库(如下所示),应用程序是否会无法启动?如果是,异常情况是什么?
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQL94Dialect
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.continue-on-error=true
2条答案
按热度按时间holgip5t1#
对于Sping Boot 2.7.2的最新版本,Spring Boot本身并不检查连接,而是获取一个连接来确定一些属性。Hibernate本身也需要一个连接来确定一些属性(由
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults
控制)。此外,如果您将
spring-boot-starter-actuator
作为依赖项,则将在启动时检查连接(由management.health.db.enabled
控制)。它需要显式指定所有自动确定的属性,以便在启动期间不获取连接(甚至
spring.jpa.hibernate.ddlAuto
)将此添加到
application.yaml
默认情况下,Hikari被用作连接池。连接池在第一次尝试获取连接时获取所有连接。这就是为什么它在启动时不获取连接的原因。
nhaq1z212#
没什么,只要执行查询即可。如果连接已经断开,JDBC驱动程序将重新连接(如果它支持它,并且您在连接字符串中启用了它--大多数不支持它),否则您将得到一个异常。
我们最好的机会是只对一个表执行一个简单的查询,例如: