Статьи

Весна с мавеном

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 в проекте.

Ссылка: Весна с Maven от нашего партнера JCG Евгения Параскива в блоге baeldung .