Должен ли я использовать Spring или Guice для проекта Tomcat/Wicket/Hibernate?

Я создаю новое веб-приложение, использующее Linux, Apache, Tomcat, Wicket, JPA/Hibernate и MySQL. Моя основная потребность — это внедрение зависимостей, с которым хорошо справляются как Spring, так и Guice. Я думаю, что мне нужна поддержка транзакций, которая будет поставляться с Spring и JTA, но я не уверен.

На сайте, вероятно, будет около 20 страниц, и я не ожидаю большого трафика.

Должен ли я использовать Spring или Guice?

Не стесняйтесь задавать и уточнять вопросы, и я сделаю все возможное, чтобы обновить это.


person Trevor Allred    schedule 23.09.2009    source источник


Ответы (4)


Если вам нравится философия «сделай все на Java», которой следует Wicket, то вы можете предпочесть Guice Spring. В Guice нет конфигурации XML — все делается с помощью Guice Module.

Например, ваш класс Wicket WebApplication может выглядеть примерно так:

public class SampleApplication extends WebApplication
{
    @Override
    protected void init()
    {
        addComponentInstantiationListener(
          new GuiceComponentInjector(this, new GuiceModule()));
    }
}

GuiceComponentInjector исходит из расширения wicket-guice. Вот модуль:

public class GuiceModule extends AbstractModule
{
    @Override
    protected void configure()
    {
        // Business object bindings go here.
        bind(Greetings.class).to(GreetingRepository.class);
    }
}

В этом примере Greetings — это интерфейс, реализованный конкретным классом GreetingRepository. Когда Guice необходимо внедрить объект Greetings, он удовлетворит зависимость с помощью объекта GreetingRepository.

Я собрал пример проекта, демонстрирующий создание приложения Wicket/Guice для Google App Engine. Вы можете спокойно игнорировать особенности App Engine и сосредоточиться на том, как работает интеграция Wicket-Guice.

person Steve    schedule 15.02.2010

Если вы в конечном итоге перейдете на Guice, обязательно ознакомьтесь с Warp Persist для Hibernate, < href="http://code.google.com/p/google-guice/wiki/Servlets" rel="noreferrer">Сервлет Guice для Tomcat и wicket-guice для Wicket.

person Jesse Wilson    schedule 23.09.2009

Spring, вероятно, даст вам больше гибкости, но если вам просто нужен DI, тогда Guice может быть лучшим выбором.

Трудно ответить, так как Spring имеет так много функций, которые сделали бы DAO более гибким, и хорошо работает с Hibernate. Было бы полезно, если бы у вас было больше требований к тому, что вы ищете.

Вот пара сравнений между Spring и Guice и Spring, Guice и Picocontainer.

http://code.google.com/p/google-guice/wiki/SpringComparison

http://www.christianschenk.org/blog/comparison-between-guice-picocontainer-and-spring/

person James Black    schedule 23.09.2009

Не забудьте CDI/JSR-299, часть Java EE 6. Вы можете использовать weld-wicket для интеграции калитки с CDI.

(пока вы используете реализацию сварки (как это делают GlassFish v3 и JBoss 6), но сварная калитка довольно мала, поэтому вы, вероятно, могли бы адаптировать ее при необходимости).

Мне удалось получить калитки 1.4 + сварки-калитки + калитки-contrib-javaee + EJB 3.1 + JPA 2.0 + wicket-security (SWARM) + Spring Security 3 + Spring 3 работают вместе в небольшом испытательном приложении. Однако это слишком много фреймворков, вероятно, они откажутся от spring-security и spring, поскольку они кажутся избыточными.

person Stefan L    schedule 15.02.2010