帮别人做海报网站,自己架设服务器,微信公众号微网站 建设报价表,wordpress后台登录页面打不开在使用SpringBoot的项目中#xff0c;如果是有使用多数据源#xff0c;可能会存在启动时数据源循环依赖的报错#xff0c;是因为使用了多数据源注入#xff0c;和DataSourceAutoConfiguration数据源自动配置的DataSourceInitializerInvoker互相产生循环依赖导致。
这种错误…在使用SpringBoot的项目中如果是有使用多数据源可能会存在启动时数据源循环依赖的报错是因为使用了多数据源注入和DataSourceAutoConfiguration数据源自动配置的DataSourceInitializerInvoker互相产生循环依赖导致。
这种错误可能会一些环境才会报错是因为当一些依赖的bean先创建的时候就会因为注入需要DataSource因此进行创建动态数据源DynamicDataSource即自定义的AbstractRoutingDataSource类的实现类创建DynamicDataSource前会先创建依赖的masterDataSourcemasterDataSource创建好后会触发DataSourceInitializerPostProcessor的postProcessAfterInitialization方法导致需要创建DataSourceInitializerInvoker而DataSourceInitializerInvoker又需要依赖DynamicDataSource多个地方都需要创建DynamicDataSource从而出现循环依赖问题。有些环境不出现是因为跟打包和环境加载的类顺序有关如果依赖的bean在DynamicDataSource后创建就不会产生循环依赖。 最终解决方案在启动的时候排除掉 DataSourceAutoConfiguration 自动配置。
附加如果确实是需要使用DataSourceInitializerInvoker初始化一些数据库脚本则可以对一些出现问题的依赖类进行加上Lazy懒加载来处理。