Можно ли интегрировать Spring MVC с Guice? - PullRequest
7 голосов
/ 24 января 2011

Это, вероятно, глупый вопрос для экспертов Spring MVC, но я не знаю, как это работает под капотом, поэтому я спрашиваю.

Еще одна формулировка для того же вопроса: есть ли зависимости от Spring DI внутри Spring MVC?

Ответы [ 3 ]

7 голосов
/ 24 января 2011

Я почти уверен, что Spring MVC невозможно использовать без контейнера IOC.

Например: в основе Spring MVC лежит DispatcherServlet. DispatcherServlet инициализирует себя, используя эти методы:

/**
 * This implementation calls {@link #initStrategies}.
 */
@Override
protected void onRefresh(ApplicationContext context) {
    initStrategies(context);
}

/**
 * Initialize the strategy objects that this servlet uses.
 * <p>May be overridden in subclasses in order to initialize
     * further strategy objects.
 */
protected void initStrategies(ApplicationContext context) {
    initMultipartResolver(context);
    initLocaleResolver(context);
    initThemeResolver(context);
    initHandlerMappings(context);
    initHandlerAdapters(context);
    initHandlerExceptionResolvers(context);
    initRequestToViewNameTranslator(context);
    initViewResolvers(context);
}

Как видите, все тесно связано с интерфейсом ApplicationContext.

Так что ваш единственный шанс будет иметь реализацию ApplicationContext в Guice, и это будет очень надуманным, я думаю.

3 голосов
/ 24 января 2011

Должна быть возможность использовать некоторые из более примитивных функциональных возможностей Spring MVC без использования контейнера IOC Spring - это, в конце концов, весь смысл IoC.

Однако это будет сложно, поскольку многие из компонентов Spring MVC используют собственные обратные вызовы жизненного цикла Spring (например, InitializingBean и DisposableBean), о которых Гайс не знает. Вам придется справиться с ними самостоятельно.

Однако лучше задать вопрос: почему вы бы хотели это сделать? Без использования Spring IoC Spring MVC теряет большую часть своей привлекательности. Я не понимаю, почему вы хотели бы использовать один без другого.

1 голос
/ 25 марта 2011

параллельное решение: http://www.earldouglas.com/guice-with-a-spring-twist

...