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

StackOverflow https://stackoverflow.com/questions/1463678

  •  13-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Например, ваша Калитка 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.

Другие советы

Если вы все-таки выберете Guice, обязательно попробуйте Сохранение деформации для спящего режима, Guice-сервлет для Томкэта и калитка для калитки.

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/

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top