Подтвердить что ты не робот

Какая ваша "лучшая практика" для первого проекта Java EE Spring?

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

Есть ли у вас какие-либо рекомендации, подсказки или основные DO NOT для стартера? Как вы начали с Spring - большого проекта или небольших учебно-подобных приложений? Какую технологию вы использовали сразу: AOP, сложный Hibernate...

4b9b3361

Ответ 1

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

  • MyProject / src / main / resources / spring /
    • datasource.xml - мой единственный источник данных bean.
    • persistence.xml - мои DAO/репозитории. Зависит от datasource.xml beans.
    • services.xml - реализация уровня сервиса. Обычно это beans, к которому я применяю транзакцию с использованием АОП. Зависит от persistence.xml beans.
    • controllers.xml - My Spring MVC-контроллеры. Зависит от services.xml beans.
    • views.xml - реализация моего представления.

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

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

Усовершенствованная архитектура

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

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

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

  • Предположим, что вы хотите сделать свой сервисный уровень транзакцией с AOP. Вы добавляете эти определения bean в services.xml или помещаете их в свой собственный transactionPolicy.xml? Расскажите об этом своей команде. Если ваша политика транзакций должна быть подключаемой?
  • Добавить Acegi/ Spring Безопасность beans в ваш файл controllers.xml или создать файл контекста security.xml? Существуют ли у вас разные требования безопасности для разных развертываний/сред?

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

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

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

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

Хорошо работает с Spring графикой IDE beans

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

Ответ 2

Сфокусируйтесь сначала на сердце Spring: Инъекция зависимостей. После того, как вы увидите все способы использования DI, начните думать о более интересных предметах, таких как AOP, Remoting, JDBC Templates и т.д. Поэтому мой лучший совет - позволить вашему использованию Spring вырасти из ядра.

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

Удачи!

Ответ 3

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

Если вы следуете лучшим методам в целом, например:

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

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

PS

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

Ответ 4

Мне действительно понравился Spring.. Это был свежий бриз воздуха в вашей средней J2EE Java Beans..

Я рекомендую реализовать пример Spring:

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

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

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

Ответ 5

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

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

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

Прочитайте процесс разработки под управлением домена. Тот факт, что вы можете использовать классы объектов домена на всех уровнях приложения Spring, означает, что у вас будет ОЧЕНЬ мощная модель домена. Используйте его.

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

Ответ 6

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

Ответ 7

Хороший способ начать - сосредоточиться на "Springframework". Портфель Spring вырос до большой кучи проектов по различным аспектам Enterprise Software. Придерживайтесь ядра в начале и пытайтесь понять концепции. Download последние бинарные файлы и посмотрите пример Spring petclinic, когда вы знакомы с ядром. Это дает неплохой обзор различных проектов, которые предлагает SpringSource.

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

Ответ 8

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

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

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

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

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