Singleton-ресурсы, используемые несколькими контроллерами MVC в Java - PullRequest
1 голос
/ 06 июля 2011

Есть ли способ использовать одноэлементный ресурс для нескольких контроллеров?

Мы получили 2 сервлета, каждый из которых имеет свои собственные контексты приложения: one-servlet.xml & two-servlet.xml и lib-context.xml с одиночным компонентом "util".

Теперь, если мы импортируем lib-context.xml в каждый из двух контекстов сервлета, описанных выше, Spring создаст отдельный контекст приложения для каждого сервлета, и мы получим 2 объекта-одиночки.

Есть ли способ настроить приложение на создание только одного одноэлементного объекта?

1 Ответ

1 голос
/ 06 июля 2011

Да. В ваш web.xml загрузите lib-context.xml с ContextLoaderListener вместо загрузки с DispatcherServlet.

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:/lib-context.xml
    </param-value>
</context-param>
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

Вы можете удалить импорт из файлов конфигурации контекста приложения для вашего сервлета.

Все DispatcherServlet будут видеть не только общий lib-context.xml выше, но также и любой контекст, который они сами загружают.

(Возможно, вам придется скорректировать приведенный мной пример param-value. Этот путь - всего лишь пример.)

...