Spring и Guice вместе, или просто Spring
Я начинаю новое веб-приложение Java с нуля.
У меня нет большого опыта работы с Spring Framework, но я знаю, что хотел бы использовать некоторые его функции, такие как Transaccions Management.
С другой стороны, мне очень нравится Guice для инъекций зависимостей.
Я знаю, что Guice и Spring могут работать вместе: http://www.jroller.com/mindcrime/entry/an_example_of_integrating_guice
Но прежде чем приступать к разработке моего приложения, я хотел бы знать, имел ли кто-то проблемы, следуя этому подходу.
Кроме того, мне действительно нравится Guice, что вам не нужен файл конфигурации XML, а просто java-модули, которые короче и их легче читать. Есть ли альтернатива файлам конфигурации XML на Spring, похожем на Guice?
Ответы
Ответ 1
Я думаю, что Spring сам по себе достаточно хорош для корпоративного приложения.
Spring Достаточно нужен XML! Современные приложения Spring используют JavaConfig и минимальную конфигурацию. Посмотрите Spring Руководства по загрузке. Приложения Spring вообще не могут использовать какой-либо XML.
Guice приятный, но очень ограниченный. С помощью Spring можно писать веб-приложение или приложение REST с транзакциями и настойчивостью очень легко и быстро. С Guice это сложнее.
Ответ 2
Если вы только начинаете, я рекомендую вам использовать https://github.com/spring-projects/spring-boot
Он имеет отличную функцию автоконфигурации и сохраняет код шаблона. Я даже могу освободить вас от использования сервера приложений из-за встроенного Tomcat. Например, реализация простого MVC-контроллера (который может использоваться как конечные точки REST) выглядит следующим образом:
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
Теперь вы можете выполнить java -jar your_package.jar
и все. Вы также получите управление транзакциями, интеграцию с базой данных и т.д. Дополнительные примеры можно найти в упомянутой ссылке, особенно в каталоге https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples
Ответ 3
Spring теперь имеет конфигурацию аннотаций на основе Java для двух основных выпусков. Вам не нужно писать одну строку XML (даже не web.xml!)
Я работал с Guice и Spring. Guice достаточно для небольших проектов, для которых требуется DI, но если вы собираетесь использовать Spring для MVC или транзакционной поддержки, вы можете просто использовать свой DI. У Guice также нет хорошей поддержки профиля, как это делает Spring - вам нужно самостоятельно ручное переключение модулей, если вы хотите иметь отдельный beans для локальной разработки, тестовых сред и производства.
Ответ 4
Я также предлагаю вам взглянуть на HK2 для легкого двигателя J2SE DI. Он похож на Guice и CDI и имеет множество возможностей расширяемости, которые могут оказаться интересными. Он также работает с Guice и Spring через двунаправленные мосты. Вы можете начать изучать HK2 здесь: http://hk2.java.net/. Информация о мосту Guice находится здесь: https://hk2.java.net/2.2.0-b27/guice-bridge.html. Информация о мосте Spring находится здесь: https://hk2.java.net/2.2.0-b27/spring-bridge.html.
Решение о том, какой поставщик DI использовать, основано на особых особенностях, необходимых вашему приложению.