由于一些优化,需要找一下项目(多数据源)中 Activiti 是从哪里获取数据源的,获取的哪一个数据源。但是这个项目并不像其他的文章里面说的使用的常规配置。找了好久总算找到了。
首先 Activiti 在与 Spring 整合的时候有个关键的配置类 SpringProcessEngineConfiguration
,它在初始化 Spring Bean(DataSourceProcessEngineAutoConfiguration
)的时候会传入一个 DataSource
:
@Bean
@ConditionalOnMissingBean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager, SpringAsyncExecutor springAsyncExecutor) throws IOException {
return this.baseSpringProcessEngineConfiguration(dataSource, transactionManager, springAsyncExecutor);
}
那么这个 DataSource
是哪个呢,由于项目是多数据源,会配置很多 DataSource
,但是会是被 @Primary
标注的那个 DataSource
:
@Bean
@Primary
@ConfigurationProperties(prefix = "")
public DataSource abcMasterDataSource() {
}