Я просто использую разные файлы конфигурации Spring XML для каждой машины и проверяю, что все биты данных конфигурации, которые различаются между машинами, ссылаются на bean-компоненты, загружаемые из этих файлов конфигурации Spring.
Например, у меня есть веб-приложение, которое подключается к интерфейсу Java RMI другого приложения. Мое приложение получает адрес интерфейса RMI этого другого приложения через компонент, настроенный в конфигурационном файле Spring XML. И у моего приложения, и у другого приложения есть экземпляры dev, test и production, поэтому у меня есть три файла конфигурации для моего приложения: один соответствует конфигурации, соответствующей производственному экземпляру, один для тестового экземпляра и один для dev экземпляр.
Тогда единственное, что мне нужно, это указать, какой файл конфигурации будет развернут на какой машине. До сих пор у меня не было проблем со стратегией создания задач Ant, которые обрабатывают копирование правильного файла конфигурации на место перед генерацией моего файла WAR; таким образом, в приведенном выше примере у меня есть три задачи Ant, одна из которых генерирует производственную WAR, одна генерирует dev-WAR и одна генерирует тестовую WAR. Все три задачи обрабатывают копирование правильного файла конфигурации в нужное место, а затем вызывают тот же следующий шаг, который компилирует приложение и создает WAR.
Надеюсь, в этом есть какой-то смысл ...