Я некоторое время работал над веб-приложением, которое можно развернуть в нескольких местах: оно предназначено для создания экземпляров на многих хостах.Это вполне возможно, , но это трудно .Написание кода таким образом, чтобы он мог работать таким образом, требует большой осторожности.
Ключом к этому является то, чтобы сделать все ваши зависимости от явных вещей и всю вашу конфигурацию управляемой свойствами, которые можно установить во время установки,Весна делает это намного проще!В частности, класс org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
позволяет вам использовать контекст сервлета в качестве источника значений, которые вы можете затем добавить в ваши bean-компоненты (например, с помощью @Value
аннотаций).Гораздо сложнее сделать все это самостоятельно.Вот (упрощенная версия) того, что я использую:
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
<property name="contextOverride" value="true" />
<property name="location" value="/WEB-INF/default.properties" />
</bean>
Это объединяет свойства контекста сервлета поверх тех, которые вы предоставляете, как значения по умолчанию в вашем веб-приложении (определенно, это хорошая практика, если большинство вещей не происходитдолжны быть изменены в большинстве случаев), а затем использует их для определения свойств.Затем я применяю свойство конфигурации (например, foo.bar
) к свойству bean-компонента, используя заполнитель, например:
@Value("${foo.bar}")
public void setFoobar(String foobar) { ... }
Вещи для настройки таким образом включают конфигурацию базы данных, абсолютные местоположения файлов, содержащих вещи, которыене могут быть упакованы в веб-приложение и т. д. Вам нужно будет использовать свои навыки и знания предметной области, чтобы определить, какие вещи должны быть перечислены.
Другими ключевыми принципами являются сохранениевозможно в веб-приложении (таким образом, уменьшая возможность для развёртывания), быть очень осторожным при документировании всего и пробовать его с несколькими сервлет-контейнерами.Помните, что человек, развертывающий ваше веб-приложение , не не имеет доступа к содержимому ваших мыслей: вы должны записать его и точно сказать, что делать.(Слишком много инструкций на уровне «щелкни по этому, щелкни по нему, волшебство случается», но это плохие инструкции, поскольку точный метод будет меняться со временем: «1018» * почему поможет гораздо больше, потому что он более переносим.)