Худшее : ввести специальный параметр пользователя / интерфейса / флажок / роль. В приложении не забывайте использовать макеты для этого особого случая везде в коде. Ужасный в обслуживании, подвержен ошибкам и, давайте посмотрим правде в глаза, довольно отстойный. Чаще всего ты ...
Самое простое решение: разработайте условные включения в контексте приложения Spring:
<import resource="services-${env}.xml"/>
где $ {env} происходит от pom.xml
:
<properties>
<env>prd</env> <!-- or test depending on build profile -->
</properties>
Не забудьте включить ресурсы фильтрация и использовать профили сборки .
при выполнении тестов Selenium. Переключение может быть сделано во время сборки Maven или с помощью другого инструмента фильтрации. Оба файла (services-prd.xml
и services-test.xml
) определяют одинаковые bean-компоненты (одинаковые интерфейсы и / или идентификаторы), но, конечно, последний использует фиктивные реализации.
Best (IMHO): если вам нужно изменить реализацию во время выполнения, AOP + JMX будет отличным решением. Просто оберните свои реальные услуги аспектами и, в зависимости от флага (доступного через JMX), используйте реальные услуги или издевательства. Очень чистый и неинвазивный.