Springboot+Flowable+动态数据源,启动时要求flowable以指定的数据源

问题遇到的现象和发生背景

img


动态数据源(多数据源),主数据源为register,但我要启动时注入到flowable的数据源为workflow

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法

AbstractEngineAutoConfiguration类有setDataSource,我能不能修改它达到效果

img

我想要达到的结果

也没觉得有多难啊 - - 刚才试了下,一下就搞定了
启动报错在创建AppEngineFactoryBean这个bean的时候,说找不到表,默认配置下还是获取primary库,

img


他有个方法invokeConfigurers,点进去看了下,开始还以为留了扩展,结果发现并不能,不过既然是factorybean,那就逃不开getObject方法,点进去看了下,
在这里构建引擎组件,

img


继续下去,涉及到初始化了

img


initConfigurators方法,他来了,spi机制允许你加入EngineConfigurator的实现类,那就好办了,

img


开整,

img


img


img


img

启动看一下效果,我库里面没有表,启动肯定是报错的,主要看数据库是不是还是primary库
启动被回调了,日志已经有了

img


错误信息也是说的test2,

img


然后看一下application的配置,

img

最后这样解决了:
@Override
public void beforeInit(AbstractEngineConfiguration abstractEngineConfiguration) {
if (initialized.compareAndSet(false, true)) {
DataSource dataSource = abstractEngineConfiguration.getDataSource();
if (dataSource instanceof TransactionAwareDataSourceProxy) {
dataSource = ((TransactionAwareDataSourceProxy) dataSource).getTargetDataSource();
}
if (dataSource instanceof DynamicRoutingDataSource) {
DataSource ds = ((DynamicRoutingDataSource) dataSource).getDataSource("gsconfig");
abstractEngineConfiguration.setDataSource(ds);
}

        LOGGER.info("启动中切换数据源...");
    }
}