2008-08-12 6 views
26

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

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

+0

Должно ли это быть одновременно? Решение по одному будет проще, если вы новичок в обоих (неясно, является ли Java EE для вас новым). – SteveD 2009-08-24 20:57:52

ответ

22

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

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

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

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

Clearer архитектура

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

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

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

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

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

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

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

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

хорошо работает с Бобы Spring IDE ГРАФ

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

2

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

14

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

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

Удачи вам!

3

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

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

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

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

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

+0

Хорошая книга в гиперссылке – Anirudh 2013-11-26 08:11:29

2

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

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

1

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

1

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

3

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

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

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

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

Тем не менее, при использовании классов классов домена для совокупности форм вам нужно будет принять во внимание недавние проблемы безопасности вокруг Spring Framework. A discussion on the Server Side раскрывает способ закрыть отверстие в комментариях.

2

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

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

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

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

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

1

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

4

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

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

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

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

PS

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