Как Spring вписывается в мою архитектуру приложения? - PullRequest
8 голосов
/ 07 июля 2010

В настоящее время я перестраиваю существующее приложение PHP с использованием Java. Поэтому у меня есть существующий графический интерфейс пользователя и схема базы данных, с которой я работаю.

Вот технологический стек, над которым я работаю:

  1. jQuery, на стороне клиента
  2. калитка, вход
  3. Весна, ???
  4. Hibernate, ORM
  5. MySQL, база данных

Прежде чем читать о Spring в Wicket In Action и в документации Hibernate, я предполагал связать их вместе через собственную бизнес-логику. У меня есть опыт работы с JBoss Seam, но мне сказали, что Spring вряд ли можно сравнить (хотя документация предполагает иное, IMO). Если не считать книгу о Spring в моем списке чтения (я еще не нашел подходящую книгу с хорошими отзывами), я в растерянности.

Какие преимущества принесет Spring в этом технологическом стеке?

Субъективный и необязательный дополнительный вопрос : какой справочный материал (книга, веб-сайт и т. Д.) Поможет мне начать с той части Spring 3, которую я могу использовать?

Ответы [ 4 ]

2 голосов
/ 07 июля 2010

@ Dolph, проще говоря, воспринимайте Spring как среду своего приложения в высшей степени.Этот «каркас» предоставляет несколько «компонентных корзин», где вы можете легко подключать различные типы реализаций.Например, для ORM вы можете выбрать использование Hibernate поверх JPA или TopLink, для внешнего интерфейса вы можете выбрать Wicket over Struts или SpringMVC и т. Д.

Вся прелесть этого (помимо всех вкусностей)указано в других сообщениях), это позволяет вам легко заменить любую из этих реализаций в будущем.Таким образом, вы можете по существу вырвать Hibernate в один прекрасный день и заменить его на TopLink, и это никогда не вызовет волнового эффекта для других компонентов.

Еще одна прелесть использования Spring - ваш код становится менее загроможденным и имеет слабые зависимости с другими классами.потому что вы тратите меньше времени на создание новых объектов самостоятельно, Spring справится с этим за вас.Тем не менее, вы быстро поймете, насколько легко вы можете тестировать свой код, потому что тестируемый API становится очень атомарным.Это одна из основных причин, почему людям не рекомендуется писать тестовые сценарии, потому что они быстро понимают, что для того, чтобы тестировать один API, им приходится создавать множество вещей просто для тестирования.Из-за этого весь процесс является хрупким, представьте, что если вы измените этот API, вам нужно будет все реконструировать, прежде чем снова его тестировать.

Книга про Spring Spring хороша, о которой упоминает @JLBarros.Мне очень нравится Spring in Action .Это очень легко читать, когда я только начал работать со Spring.Это, вероятно, один справочник, который я читаю с кожи на кожу.

2 голосов
/ 07 июля 2010

Помимо внедрения зависимостей, Spring предлагает такие функции, как декларативное управление транзакциями, простая интеграция с ORM, поддержка аспектно-ориентированного программирования и многое другое.

Документацию см. В справочнике Spring: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html

2 голосов
/ 07 июля 2010

Во-первых, вы можете сделать свое веб-приложение без Spring.Но весна сильно облегчит вещи.Пружинные рамки легкие, неинвазивные.Весна - это своего рода проводник.Помимо прочего, Spring помогает вам в:

  1. Чтобы ваши объекты были слабо связаны.Это сделает ваше приложение более гибким и открытым для будущих изменений

  2. Мощная поддержка транзакций через AOP (Аспектно-ориентированное программирование).

  3. Объектмодуль интеграции реляционного отображения (ORM).Spring не пытается реализовать собственное решение ORM, но предоставляет хуки для нескольких популярных платформ ORM, включая Hibernate, Java Persistence API, Java Data Objects и iBATIS SQL Maps.Spring Transaction Management поддерживает каждую из этих сред ORM, а также JDBC.

  4. Среда Spring MVC.Несмотря на то, что Spring интегрируется с несколькими популярными средами MVC, он также поставляется с собственной очень мощной средой MVC, которая продвигает слабосвязанные методы Spring на веб-уровне приложения.Весна: Pro Spring

2 голосов
/ 07 июля 2010

Весна, как отмечено в , этот обзор неинвазивен. Он просто подключает компоненты вашего приложения. И предоставляет полезные классы, которые облегчают использование других сред (JMS, JPA и т. Д.). Spring ни к чему не обязывает использовать свои классы или интерфейсы.

То, что он обрабатывает, - это создание ваших компонентов (объектов), так что вы можете ссылаться на зависимости класса, не создавая их экземпляров. То есть вы говорите что нужно вашему классу, а не как получает его. Это делает приложение очень гибким.

Это вкратце - подробнее читайте в связанной статье. Речь идет не о последней версии, но это не имеет значения.

...