现在场景是这样的,在我们java服务启动时,数据库并没有准备好,我们数据源去连接数据库,连接失败,导致整个spring容器异常,然后整个应用启动失败。我们问题是这样的:我们是否支持,在数据库连接失败时,让应用正常启动,程序内部异常处理,当数据库上线后,应用调用spring容器时,能正常访问数据库。
yb3bgrhw1#
spring在启动时会初始化Applicationcontext容器,然后配置了数据库连接时,会初始化数据库连接,你们现在的需求是希望将初始化数据库连接这个动作手动触发?那么这个时候就有个问题,初始化后的bean怎么加载到容器里?貌似spring不支持这样做吧?
s71maibg2#
@jameBoy ,谢谢您的关注,我们设想是这样的,希望初始化或连接数据库的动作不要使整个spring容器关闭掉,如果数据源初始化遇到各种问题,只是处理掉异常的话,成功创建数据源bean,那么其他bean是可以陆续创建成功的,但是我们外部的操作是提示失败的,不是启动失败的。当我们发现数据库上线后,对bean是没有影响的,操作可以正常进行了。proxool是可以这样做的。
hfyxw5xn3#
我也遇到同样问题,设定初始化数为0可解决问题,但是,如果在启动时就需要连接数据库查询,那么也会出现这样的问题,如果一不小心填写错误的密码,启动的时候疯狂连接数据库,很容易就导致Oracle的账户被锁,能否修改为不重新连接或者只重连几次,重连最大次数仍然失败后先让Spring应用启动再说。
nxowjjhe4#
@fsyyyhl 咱们一起等待能有解决
ct3nt3jp5#
这个问题请问怎么设置呢?@wenshao比如,某个db故障了,重启服务仍然可以启动。
现在spring cloud+druild,db挂掉的情况下,服务好像不会起来
mu0hgdu06#
设置spring配置文件的数据源bean为lazy-init="true",先不要加其他属性试下
50few1ms7#
@caarto 老哥这个问题解决了吗?我也想这样操作:系统连接了多个数据库,有些数据库是特定的业务下才使用的,不是必须的,如何做到某一个库连接失败的时候,应用也能正常启动呢?
7条答案
按热度按时间yb3bgrhw1#
spring在启动时会初始化Applicationcontext容器,然后配置了数据库连接时,会初始化数据库连接,你们现在的需求是希望将初始化数据库连接这个动作手动触发?那么这个时候就有个问题,初始化后的bean怎么加载到容器里?貌似spring不支持这样做吧?
s71maibg2#
@jameBoy ,谢谢您的关注,我们设想是这样的,希望初始化或连接数据库的动作不要使整个spring容器关闭掉,如果数据源初始化遇到各种问题,只是处理掉异常的话,成功创建数据源bean,那么其他bean是可以陆续创建成功的,但是我们外部的操作是提示失败的,不是启动失败的。
当我们发现数据库上线后,对bean是没有影响的,操作可以正常进行了。
proxool是可以这样做的。
hfyxw5xn3#
我也遇到同样问题,设定初始化数为0可解决问题,但是,如果在启动时就需要连接数据库查询,那么也会出现这样的问题,如果一不小心填写错误的密码,启动的时候疯狂连接数据库,很容易就导致Oracle的账户被锁,能否修改为不重新连接或者只重连几次,重连最大次数仍然失败后先让Spring应用启动再说。
nxowjjhe4#
@fsyyyhl 咱们一起等待能有解决
ct3nt3jp5#
这个问题请问怎么设置呢?@wenshao
比如,某个db故障了,重启服务仍然可以启动。
现在spring cloud+druild,db挂掉的情况下,服务好像不会起来
mu0hgdu06#
设置spring配置文件的数据源bean为lazy-init="true",先不要加其他属性试下
50few1ms7#
@caarto 老哥这个问题解决了吗?我也想这样操作:系统连接了多个数据库,有些数据库是特定的业务下才使用的,不是必须的,如何做到某一个库连接失败的时候,应用也能正常启动呢?