GWT с пружинным впрыском - PullRequest
9 голосов
/ 22 мая 2009

Я погуглил, но не смог найти ответа.

Я планирую использовать GWT. Я хочу знать, могу ли я использовать Spring в своем коде GWT для использования инфраструктуры внедрения зависимостей? Я не говорю о взаимодействии графического интерфейса GWT с приложением backend spring.

Причина, по которой я спрашиваю, состоит в том, что код GWT компилируется в JavaScript, и это то, что выполняется в браузере. Если я использую Spring-код в этом, то будет ли он работать или в этом отношении любая другая библиотека, такая как log4j и т. Д .?

Или код GUI должен быть только чистым GWT API?

Например,

public class MyTable {
   private Button myButton;
   @Autowired
   public MyTable(Button aMyButton) {
      myButton = aMyButton;
   }
}

Ответы [ 6 ]

18 голосов
/ 23 мая 2009

Guice поддерживается в GWT с использованием GIN . Для Spring-DI с GWT, проверьте GWT Toolbox или Rocket GWT .

Я считаю, что GIN - более естественный выбор для GWT. Не потому, что это также сделано Google, а потому, что использование XML для конфигурации GWT не имеет абсолютно никакого смысла. Все статически компилируется в JavaScript, поэтому нет необходимости во внешней настройке. Держите ваши инструменты рефакторинга счастливыми; пойти на Джин.

Чтобы ответить на ваш другой вопрос, вы не найдете много фреймворков SE, которые работают на GWT. Прежде всего, он не поддерживает рефлексию или манипулирование байт-кодом (все это JavaScript), что сразу исключает множество фреймворков. Log4j, с другой стороны, не имеет смысла, потому что на стороне клиента нет файловой системы, но есть библиотеки , которые делают вещи по-другому.

Библиотеки Spring для GWT, упомянутые выше, в основном переписаны для Spring для GWT. Они не делятся кодом с Spring просто потому, что не могут. Эти фреймворки работают путем генерации кода («фабрики»), который связывает ваши компоненты, как если бы вы делали DI вручную.

Так же работает GIN, он генерирует фабрики Java для ваших классов, а GWT компилирует его в оптимизированный JavaScript (что означает незначительное снижение производительности). GIN использует Guice за кулисами для проверки конфигурации во время компиляции и для проверки модулей.

3 голосов
/ 03 августа 2009

Я подумал, что будет проще создать Spring Controller, который будет вызывать метод doPost GWT RemoteServlet. Образец предоставляется здесь . Я знаю, что это немного вокруг. Но это защищает вас от изменений в реализации GWT, если таковые имеются. Надеюсь, это поможет.

3 голосов
/ 22 мая 2009

Нет, вы не сможете этого сделать. Логика DI применяется во время выполнения на стороне сервера, а код GWT полностью на стороне клиента.

1 голос
/ 22 июля 2010

Вы можете реализовать службу сервлетов на стороне сервера, которая получает объекты из Spring ApplicationContext, рендеринг в объекты JSon (я сделал это с http://json -lib.sourceforge.net / apidocs / net / sf / json /JSONSerializer.html) в качестве примера. Тогда у вас может быть Singleton Facade Service, которая отправляет запрос со стороны GWT-клиента в наш Servlet Service.

Таким образом, вы можете получить внедрение зависимости во время выполнения на стороне GWT-клиента.

1 голос
/ 23 мая 2009

Интересно, поддерживается ли Guice (каркас Google DI) GWT?

Это может быть альтернативой.

0 голосов
/ 27 февраля 2010

Spring ME может помочь вам здесь. Хотя я частично согласен с некоторыми из предыдущих ответов, было бы неплохо иметь одинаковую парадигму программирования (и верстки) для кода вашего клиента и сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...