我的Spring Boot应用程序需要连接到两个不同的数据库。第一个数据库(main)安装在与localhost应用程序相同的服务器上,而另一个数据库(辅助数据库)安装在远程服务器上,并不总是可用(用于维护,备份,测试等)。
我使用以下配置(application.properties)。
# main connection
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/?autoReconnect=true&verifyServerCertificate=false&useSSL=false&requireSSL=false
spring.datasource.username=emater
spring.datasource.password=emater
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
# secondary connection
planejamento.datasource.driverClassName=com.mysql.jdbc.Driver
planejamento.datasource.url=jdbc:mysql://10.22.1.4/?verifyServerCertificate=false&useSSL=false&requireSSL=false
planejamento.datasource.username=emater
planejamento.datasource.password=emater
planejamento.datasource.testWhileIdle = false
#config hibernate
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQLSpatial56Dialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
spring.jpa.show-sql=true
spring.jpa.format-sql=true
spring.jpa.use-sql-comments=true
spring.jpa.hibernate.enable_lazy_load_no_trans=true
初始化应用程序时,hibernate尝试连接到两个数据库。如果当时第二个数据库不可用,则抛出异常并中止应用程序初始化。
我可以使用任何属性来阻止我的应用程序在启动时中止吗?
我该怎么办?
答案 0 :(得分:1)
Hibernate需要在SessionFactory
时连接到数据库,以便我可以从数据库DatabaseMetaData
中提取Connection
。
使用DatabaseMetaData
,需要找出:
ResultSet
初始化SessionFactory
时,此信息已解决,因此,当关联的数据库也可用时,您最好懒得开始新的MicroService。