1. Обзор
В этом руководстве будет обсуждаться, как настроить Spring с Maven, и будут рассмотрены конкретные примеры использования зависимостей Spring. Последние версии Spring можно найти на Maven Central .
2. Основные Maven Spring Зависимости
Spring был спроектирован так, чтобы быть модульным и гибким — базовый контейнер Spring можно использовать в различных сценариях, без включения какой-либо более продвинутой функциональности, которую может предложить фреймворк. Самая базовая установка Maven будет использовать только зависимость Spring-context :
1
2
3
4
5
6
7
8
9
|
< properties > < org.springframework.version >3.2.4.RELEASE</ org.springframework.version > </ properties > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-context</ artifactId > < version >${org.springframework.version}</ version > < scope >runtime</ scope > </ dependency > |
Эта зависимость — spring-context — определяет фактический контейнер Spring Injection и имеет небольшое количество зависимостей: spring-core , spring-expression , spring-aop и spring-beans . Они дополняют контейнер, обеспечивая поддержку некоторых основных технологий Spring : утилит Core Spring, языка выражений Spring (SpEL), поддержки аспектно-ориентированного программирования и механизма JavaBeans .
Обратите внимание, что область времени выполнения используется при определении зависимости контекста Spring — это обеспечит отсутствие зависимостей времени компиляции ни в одном API, специфичном для Spring. Для более сложных сценариев использования область выполнения может быть удалена из некоторых выбранных зависимостей Spring, но для более простых проектов нет необходимости компилировать в Spring для полного использования инфраструктуры.
Также обратите внимание, что начиная с Spring 3.2, CGLIB-зависимость (теперь обновленная до CGLIB 3.0) была переупакована (весь пакет net.sf.cglib теперь org.springframework.cglib) и встроена непосредственно в JAR-файл Spring (см. JIRA для дополнительных деталей), поэтому нет необходимости определять его явно.
3. Весеннее упорство с Maven
В дополнение к основным зависимостям Spring, показанным выше, основная зависимость персистентности Spring — это spring-orm :
1
2
3
4
5
|
< dependency > < groupId >org.springframework</ groupId > < artifactId >spring-orm</ artifactId > < version >${org.springframework.version}</ version > </ dependency > |
Это обеспечивает поддержку Hibernate и JPA, таких как HibernateTemplate и JpaTemplate, а также несколько дополнительных зависимостей, связанных с постоянством: spring-jdbc и spring-tx . Библиотека доступа к данным JDBC определяет поддержку Spring JDBC, а также JdbcTemplate , а spring-tx представляет собой чрезвычайно гибкую абстракцию управления транзакциями в Spring.
4. Весенний MVC с Maven
Чтобы использовать поддержку Spring Web и Servlet, в pom необходимо включить две зависимости, опять же в дополнение к основным зависимостям сверху:
01
02
03
04
05
06
07
08
09
10
|
< dependency > < groupId >org.springframework</ groupId > < artifactId >spring-web</ artifactId > < version >${org.springframework.version}</ version > </ dependency > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-webmvc</ artifactId > < version >${org.springframework.version}</ version > </ dependency > |
Зависимость spring-web содержит общие веб-утилиты для сред сервлетов и портлетов, а spring-webmvc обеспечивает поддержку MVC для сред сервлетов. Поскольку у Spring-webmvc есть Spring -Web как зависимость, явное определение Spring -Web не требуется при использовании Spring-Webmvc .
5. Весенняя безопасность с Maven
Зависимости Security Maven подробно обсуждаются в статье Spring Security with Maven .
6. Весенний тест
Spring Test Framework может быть включен в проект через следующую зависимость:
1
2
3
4
5
6
|
< dependency > < groupId >org.springframework</ groupId > < artifactId >spring-test</ artifactId > < version >${spring.version}</ version > < scope >test</ scope > </ dependency > |
С весны 3.2 проект Spring MVC Test, который начинался как самостоятельный проект, доступный на github , был включен в базовую среду тестирования; это означает, что приложения Spring 3.2 должны просто использовать зависимость spring-test .
Для приложений, все еще использующих Spring 3.1 и ниже, более старая автономная зависимость Maven все еще существует и может использоваться для почти идентичных результатов. Однако зависимость не от Maven Central, поэтому для ее использования потребуется добавить собственный репозиторий в pom проекта.
7. Использование вех
Релизная версия Spring размещена на Maven Central. Тем не менее, если проекту необходимо использовать промежуточные версии, то в pom необходимо добавить собственный репозиторий Spring:
1
2
3
4
5
6
7
|
< repositories > < repository > < id >repository.springframework.maven.milestone</ id > < name >Spring Framework Maven Milestone Repository</ name > </ repository > </ repositories > |
После определения этого репозитория проект может определять зависимости, такие как:
1
2
3
4
5
|
< dependency > < groupId >org.springframework</ groupId > < artifactId >spring-core</ artifactId > < version >3.2.0.RC2</ version > </ dependency > |
8. Использование снимков
Как и вехи, снимки размещаются в пользовательском хранилище:
1
2
3
4
5
6
7
|
< repositories > < repository > < id >repository.springframework.maven.snapshot</ id > < name >Spring Framework Maven Snapshot Repository</ name > </ repository > </ repositories > |
После включения репозитория SNAPSHOT в pom можно ссылаться на следующие зависимости:
1
2
3
4
5
|
< dependency > < groupId >org.springframework</ groupId > < artifactId >spring-core</ artifactId > < version >3.3.0.BUILD-SNAPSHOT</ version > </ dependency > |
И даже:
1
2
3
4
5
|
< dependency > < groupId >org.springframework</ groupId > < artifactId >spring-core</ artifactId > < version >4.0.0.BUILD-SNAPSHOT</ version > </ dependency > |
9. Вывод
В этой статье обсуждаются практические детали использования Spring с Maven . Зависимости Maven, представленные здесь, являются, конечно, одними из основных, и есть несколько других, о которых стоит упомянуть, и которые еще не были сокращены. Тем не менее, это должно стать хорошей отправной точкой для использования Spring в проекте.