Что вы «лучшая практика» для первого проекта Spring Java EE?

голоса
26

Я в настоящее время пытаются попасть в разработке Java EE с рамками Spring. Как я новичок в Весна, это трудно визуализация, как хороший ход проект должен начаться.

Есть ли у вас какие - либо лучшие практики , Tipps или крупных неимущими DO для стартера? Как вы начали с весной - большим проектом или небольшими учебником типа приложений? Какие технологии вы использовали сразу: АОП, сложные Hibernate ...

Задан 12/08/2008 в 08:36
источник пользователем
На других языках...                            


11 ответов

голоса
22

Небольшой совет - я счел полезным модуляризировать и четко помечать Spring XML файлов контекст, основанные на заботе приложений. Вот пример для веб-приложение, которое я работал на:

  • MyProject / src / main / resources / spring /
    • datasource.xml - Мой единственный источник данных боб.
    • persistence.xml - Мои Daos / Хранилища. В зависимости отdatasource.xmlфасоли.
    • services.xml - реализации обслуживания слоя. Они, как правилобобык которым я применить transactionalityпомощью АОП. В зависимости отpersistence.xmlфасоли.
    • controllers.xml - My Spring MVC контроллеры. В зависимости отservices.xmlфасоли.
    • views.xml - Мои реализации вид.

Этот список не является ни совершенным, ни исчерпывающим, но я надеюсь, что это иллюстрирует точку. Выберите любую стратегию именования и детализации лучше работает для вас.

В моем (ограниченном) опыте, я видел этот подход следующее получал метод преимущества:

Яснее архитектура

Очевидно, с именем файлов контекст дают тех, кто незнаком с вашей структурой проекта разумное местом, чтобы начать искать бин. Можно сделать обнаружения круговой / нежелательных зависимостей немного легче.

Помогает дизайн домена

Если вы хотите добавить определение бин, но это не вписывается ни в одном из ваших контекстных файлов, возможно, есть новая концепция или озабоченность развивающаяся? Примеры:

  • Предположим , что вы хотите, чтобы ваш сервисный слой транзакционным с АОП. Есть ли добавить эти определения боб к services.xml, или поместить их в свои собственные transactionPolicy.xml? Обсудите это с вашей командой. Если ваша политика сделки будет подключаемой?
  • Добавить фасоль Acegi / Spring Security в свой controllers.xmlфайл, или создать security.xmlфайл контекста? У вас есть различные требования безопасности для различных развертываний / сред?

тестирование интеграции

Вы можете подключить до подмножества приложения для тестирования интеграции (например: учитывая вышеуказанные файлы, чтобы проверить базу данных , которую нужно создать только datasource.xmlи persistence.xmlбобы).

В частности, вы можете аннотировать интеграционный тестовый класс как таковые:

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" })

Хорошо работает с Beans Graph Spring среды IDE

Имея много сфокусированных и хорошо именованные контекстные файлы позволяет легко создавать пользовательское BeansConfigSets визуализировать слои вашего приложения с использованием Spring IDE, Фасоль Graph . Я использовал это раньше , чтобы дать новым членам команды обзор высокого уровня организации нашего приложения.

Ответил 16/08/2008 d 22:12
источник пользователем

голоса
14

Фокус в первую очередь на основе Spring: Dependency Injection. После того, как вы видите, все способы, которые можно использовать DI, а затем начать думать о более интересных частей, как АОП, Remoting, JDBC шаблоны т.д. Так что мой лучший бит совет, это пусть ваше использование весна растут из ядра.

Лучшая практика? Если вы используете стандартный XML-конфигурации, управлять размером отдельных файлов и комментировать их рассудительно. Вы можете думать, что вы и другие прекрасно понимаете ваши определения боба, но на практике они несколько сложнее вернуться к простому, чем старый коду Java.

Удачи!

Ответил 12/08/2008 d 08:43
источник пользователем

голоса
4

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

Если вы будете следовать передовым практикам в целом, как:

  • Определение интерфейса, а не абстрактные классы
  • Создание типов неизменен
  • Держите зависимости, как мало насколько это возможно для одного класса.
  • Каждый класс должен сделать одну вещь и делать это хорошо. Большие монолитные классы сосать, их трудно проверить и трудно использовать.

Если ваши компоненты малы и следовать догмам выше, они должны быть легко подключить и играть с другими вещами. Выше точки, естественно, относится и к самой Spring Framework.

PS

Dont слушать пунктов выше, они говорят о том, как сделать что угодно. Его более важно, чтобы научиться думать, а не как что-то сделать. Люди могут думать, повторяя что-то не умный, мышление.

Ответил 08/05/2010 d 04:22
источник пользователем

голоса
3

Начало здесь - я на самом деле считаю , что это один из лучших книг Software Dev , которые я читал.
Эксперт Spring MVC и Web Flow

Изучают новый аннотаций на основе конфигурации для классов MVC. Это является частью Spring 2.5. Использование аннотаций на основе классов собираются сделать написание модульных тестов чертовски намного проще. Кроме того, будучи в состоянии сократить количество XML хорошая вещь.

Ах да Unit Tests - если вы используете Spring, вам лучше быть модульного тестирования. :) тесты писать юнит для всех ваших Web и Service Layer классов.

Читайте на Domain Driven Design. Тот факт, что вы можете использовать классы объектов домена на всех уровни весенней заявки означает, что вы будете иметь очень мощный Domain Model. Усильте его.

Тем не менее, при использовании классов объектов домена для формы населения, вы хотите , чтобы принять во внимание недавних проблем безопасности вокруг Spring Framework. Обсуждение на стороне сервера показывает путь , чтобы закрыть дыру в комментариях.

Ответил 12/08/2008 d 22:11
источник пользователем

голоса
3

Я на самом деле очень понравился весна .. Это была свежий ветер воздуха в вашей средней Фасоли J2EE Java ..

Я рекомендую пример реализации Spring обеспечивает:

http://static.springframework.org/docs/Spring-MVC-step-by-step/

Кроме того, я решил пойти сполна и добавил Hibernate к моему Спринг приложения;), потому что Spring предоставляет отличную поддержку для Hibernate ... :)

У меня есть, однако, не, что я узнал жесткий путь (продукт производства) ... Если вы только реализовать интерфейс контроллера, и возвращает объект ModelAndView с некоторыми данными, как это предусмотрено с интерфейсом, Spring делает garbadge собрать тех, ресурсы, для попыток кэшировать эти данные. Так что будьте осторожны, чтобы поместить большие данные в этих объектах ModelAndView, потому что они будут борами вашей памяти сервера до тех пор, пока сервер находится в воздухе, как только эта страница была просмотрена ...

Ответил 12/08/2008 d 08:54
источник пользователем

голоса
2

«... Какие технологии вы использовали сразу: АОП, сложные Hibernate ...» - я бы сказал, что вопрос лучше было бы спросить, что люди не используют сразу. Я хотел бы добавить примеры вы привести к этому списку.

Spring MVC и JDBC шаблон будет мои исходные рекомендации. Вы можете пройти очень длинный путь только с теми.

Моя рекомендация будет следовать пружину архитектурных рекомендациям добросовестно. Используйте свое НАСЛОЕНИЕ идею. Убедитесь, что ваш веб-слой полностью отсоединяться от остальных. Вы можете сделать это, позволяя веб-уровневый взаимодействуют с задней частью только через сервисный уровень.

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

IDE с лучшей поддержкой Spring является IntelliJ. Стоит потратить несколько долларов.

Ответил 23/08/2009 d 12:15
источник пользователем

голоса
2

Хороший способ начать это сосредоточиться на «Springframework». Spring портфель вырос в большую кучу проектов вокруг различных аспектов корпоративного программного обеспечения. Придерживайтесь ядра в начале и попытаться понять концепции. Скачать последние файлы и проверить petclinic пример Spring раз вы знакомы с ядром. Это дает достаточно хороший обзор различных проектов SpringSource может предложить.

Хотя документация очень хорошо, я бы рекомендовал книгу после того, как вы усвоили понятие ядра. То , что я нашел проблематичным с документацией, в том , что это не так глубоко и не может дать вам все детали, необходимые.

Ответил 12/08/2008 d 10:31
источник пользователем

голоса
2

Хотя его уже много лет , так как я использовал весной, и я не могу сказать , что я фанат этого, я знаю , что инструмент App предохранителей ( https://java.net/projects/appfuse/ ) было полезно , чтобы помочь людям самонастройки с точки зрения создания всех артефактов нужно идти.

Ответил 12/08/2008 d 08:40
источник пользователем

голоса
1

С выпуском Spring 2.5 и 3.0, я думаю, что одна из самых важных лучших практик, чтобы воспользоваться в настоящее время являются пружинными аннотациями. Аннотации для контроллеров, службы и репозиториев можно сэкономить массу времени, позволяют сосредоточиться на бизнес-логике вашего приложения, и потенциально может все, что вам сделать все ваши объекта простые старые объекты Java (Pojos).

Ответил 08/05/2010 d 04:13
источник пользователем

голоса
1

Если вы просто хотите, чтобы плескаться в нем немного и посмотреть, если вам это нравится, я рекомендую начать с DAO слоя, используя Spring, JDBC и / или спящий режим поддержки. Это будет подвергать вас много основных понятий, но сделать это таким образом, что легко изолировать от остальной части вашего приложения. Это маршрут, я следовал, и это было хорошей разминкой перед тем, как в здание полное приложение с весны.

Ответил 12/08/2008 d 16:28
источник пользователем

голоса
1

Весна также очень много о модульном тестировании и поэтому контролируемости ваших классов. Это в основном означает думать о модульности, разделение задач, ссылки на класс через интерфейсы и т.д.

Ответил 12/08/2008 d 11:00
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more