Перейти к основному содержимому

Весна с Мейвен

· 4 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

Оглавление

  1. Обзор
  2. Основные зависимости Spring с Maven
  3. Spring Persistence с Maven
  4. Spring MVC с Maven
  5. Весенняя безопасность с Maven
  6. Весенний тест с Maven
  7. Использование вех
  8. Использование снимков
  9. Вывод

1. Обзор

В этом руководстве показано, как настроить зависимости Spring с помощью Maven . Последние выпуски Spring можно найти на Maven Central .

2. Основные зависимости Spring с Maven

Spring спроектирован так, чтобы быть очень модульным — использование одной части Spring не должно и не требует другой. Например, базовый контекст Spring может быть без библиотек Persistence или MVC Spring.

Давайте начнем с фундаментальной настройки Maven, которая будет использовать только зависимость spring -context :

<properties>
<org.springframework.version>5.2.8.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 Container и имеет небольшое количество зависимостей: spring-core , spring-expression , spring-aop и spring-beans . Они дополняют контейнер, обеспечивая поддержку некоторых основных технологий Spring : утилит Core Spring, языка выражений Spring (SpEL), поддержки аспектно-ориентированного программирования и механизма JavaBeans .

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

Также обратите внимание, что JDK 8 — это минимальная версия Java, необходимая для Spring 5.2. Он также поддерживает JDK 11 в качестве текущей ветки LTS и JDK 13 в качестве последней версии OpenJDK.

3. Spring Persistence с Maven

Давайте теперь посмотрим на постоянные зависимости Spring — в основном , spring-orm :

<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 представляет чрезвычайно гибкую абстракцию управления транзакциями .

4. Spring MVC с Maven

Чтобы использовать поддержку Spring Web и Servlet, в pom необходимо включить две зависимости , опять же в дополнение к основным зависимостям, указанным выше:

<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-webmvc явное определение spring-web не требуется . ``

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

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>${org.springframework.version}</version>
</dependency>

5. Весенняя безопасность с Maven

Зависимости Security Maven подробно обсуждаются в статье Spring Security with Maven .

6. Весенний тест с Maven

Spring Test Framework можно включить в проект с помощью следующей зависимости:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>

С Spring 5 мы также можем выполнять параллельное выполнение тестов .

7. Использование вех

Релизная версия Spring размещена на Maven Central. Однако, если проекту необходимо использовать веховые версии, в pom необходимо добавить собственный репозиторий Spring:

<repositories>
<repository>
<id>repository.springframework.maven.milestone</id>
<name>Spring Framework Maven Milestone Repository</name>
<url>http://repo.spring.io/milestone/</url>
</repository>
</repositories>

Как только этот репозиторий будет определен, проект может определить такие зависимости, как:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.0-M1</version>
</dependency>

8. Использование снимков

Как и вехи, моментальные снимки размещаются в пользовательском репозитории:

<repositories>
<repository>
<id>repository.springframework.maven.snapshot</id>
<name>Spring Framework Maven Snapshot Repository</name>
<url>http://repo.spring.io/snapshot/</url>
</repository>
</repositories>

После включения репозитория SNAPSHOT в файле pom.xml можно ссылаться на следующие зависимости:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.3.BUILD-SNAPSHOT</version>
</dependency>

А также — для 5.x:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.0-SNAPSHOT</version>
</dependency>

9. Заключение

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