在运行时用 H2 DataSource 替换 DataSource bean

Replace DataSource bean with H2 DataSource at runtime

我正在研究一个测试框架。

当某些用例需要 H2 时,我想用一个用于 H2 的 MySQL DataSource bean 替换(在 XML 中未配置为 bean)。

一些用例仍然使用MySQL,所以我不能直接修改DataSource bean config。在SpringXML配置文件中只能配置一个DataSource(没有配置H2DataSource

有没有办法在运行时替换 sqlmapclient (ibatis) 中的 DataSource bean?

一种选择是在您的测试中使用 Spring 对 bean 定义配置文件 @ActiveProfiles 的支持 类.

但是,如果您不愿意或不能这样做,另一种选择是实现自定义 BeanFactoryPostProcessor 替换 MySQL DataSource 带有 H2 DataSource 的 bean 定义。请记住,如果你走那条路,你仍然需要条件逻辑(在你的 BeanFactoryPostProcessor 中)来决定是否替换 MySQL DataSource bean 定义。