2016-09-11 3 views
0

Я работаю над тестовой инфраструктурой.Замените компонент DataSource на H2 DataSource во время выполнения

Я хочу заменить bean-модуль MySQL DataSource на один для H2 (который не настроен как компонент в XML), когда для некоторых случаев использования требуется H2.

Некоторые прецеденты используют MySQL, поэтому я не могу напрямую изменять конфигурацию bean-конфигурации DataSource. Только один DataSource должен быть настроен в конфигурационном файле Spring XML (не настроен H2 DataSource).

Есть ли способ заменить фасоль DataSource в sqlmapclient (ibatis) во время выполнения?

+0

Рассматривали ли вы просто настройку поддержки Spring для профилей определений _bean и использование '@ ActiveProfiles' в ваших тестовых классах? –

+0

hI @SamBrannen, это хорошо, но каждый проект должен внести некоторые изменения, чтобы добавить конфигурацию профилей. Я надеюсь, что другие используют мою тестовую структуру с нулевым изменением. :) –

ответ

0

Один из вариантов заключается в использовании поддержки Spring для профилей определения фанов и @ActiveProfiles в ваших тестовых классах.

Однако, если вы не готовы или не в состоянии сделать это, другой вариант был бы реализовать пользовательский BeanFactoryPostProcessor что заменяет определения боба для MySQL DataSource с определением бин для Н2 DataSource. Имейте в виду, что если вы идете по этому маршруту, вам все равно понадобится условная логика (в вашем BeanFactoryPostProcessor), чтобы решить, следует ли заменять определение bean-кода MySQL DataSource.

+0

Я могу использовать BeanFactoryPostProcessor для замены источника данных в junit. Поэтому проекты не должны ничего делать. Большое спасибо.: D –

Смежные вопросы