Урок 1: Cоздание каркаса Spring-приложения
Этот урок освещает создание каркаса Spring-приложения.
Что вы создадите
Вы создадите Maven проект, который будет являться каркасом для остальных уроков.
Что вам потребуется
- Любимый текстовый редактор или IDE
- JDK 7 и выше
- Maven 3.0+
Настройка проекта
Для начала вам необходимо настроить базовый скрипт сборки. В этом уроке рассмотрим код для работы с Maven. Если вы не знакомы с ним, то ознакомьтесь с соответствующим уроком Сборка Java-проекта с использованием Maven.
Создание структуры каталогов
В выбранном вами каталоге проекта создайте следующую структуру каталогов:
+-- src +-- main +-- java
Создание файла сборки Maven
Ниже представлен начальный файл сборки Maven, который вы должны создать и поместить в каталог проекта со следующим содержимым:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-projects.guides</groupId>
<artifactId>spring-lessons</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
На данном этапе проект совсем пустой и без зависимостей. По команде mvn clean install
должен появиться каталог target
, в котором будет jar-файл проекта.
Добавление модулей Spring Framework
Spring Framework разработан с учетом модульной архитектуры, поэтому вы можете добавлять в свой проект ту функциональность, которая вам действительно необходима. Этим вы можете уменьшить итоговый размер дистрибутива программы и возможно, уменьшить время инициализации и старта приложения. На момент написания данного урока Spring Framework насчитывает 20 модулей, а полный список с описание каждого из них представлен в таблице 2.1.
Первое, что нам необходимо, это добавить модуль для работы с контекстом и Dependency Injection(DI).
Делается это так же, как и для всех остальных зависимостей для Maven в ваш pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
</dependencies>
Аналогичным образом добавляются другие модули, только вместо spring-context
подставляется
название необходимого модуля. Если же вы хотите загружать версии модулей с оригинального сайта, то вам
необходимо указать расположение репозитория в вашей Maven конфигурации:
<repositories>
<repository>
<id>io.spring.repo.maven.release</id>
<url>http://repo.spring.io/release/</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
Если вам необходимо добавить все или достаточно большое количество модулей одной и той же версии, либо вообще разных, то в Maven это можно сделать достаточно просто, просто добавить следующий фрагмент в вашу Maven конфигурацию:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.1.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
При этом по-умолчанию версия Spring-модулей будет установлена в 4.1.5.RELEASE
и вы можете
убрать <version>4.1.5.RELEASE</version>
в описании каждого из модулей, либо
вообще указать другую версию, более раннюю, если, к примеру, в модуле версии по-умолчанию нет того
функуционала, какой есть в более ранней.
Логгирование
По умолчанию, Spring Framework, в частности модуль spring-core
использует для логгирования
стандартную реализациею Jakarta Commons Logging API (JCL) common-logging
, поэтому вам
нет необходимости беспокоиться об этой функциональности и о том, что приложение не может быть собрано
из-за этой зависимости в других модулях. Однако, если вам по каким-то причинам необходимо использовать
другой инструмент логгирования, к примеру, SLF4J,
то существуют несколько способов для этого:
- Исключить зависимость из
spring-core
модуля - Некоторые другие способы, описанные в SLF4J FAQ
Для исключения стандартной зависимости по первому способу вам необходимо добавить новые зависимости
в секцию dependencyManagement
в вашей Maven конфигурации:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.5.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Либо добавить к модулю spring-core
или зависящему от него модулю подобное. Должно выглядеть примерно так:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Теперь для использования SLF4 вам необходимо добавить в вашу Maven конфигурацию следующее:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
Однако более распостраненным способом является использование Logback:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
Многие также используют Log4j,
Spring предоставляет некоторые утилиты для настройки и инициализации Log4j. Для того, чтобы сделать
этот инструмент логгирования по умолчанию, необходимо добавить в ваш корневой каталог приложения
конфигурационные файлы(log4j.properties
или log4j.xml
) и добавить в вашу
Maven конфигурацию следующее:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
Ниже приведет пример log4j.properties
. Более подробную информацию по настройке, а также
использованию Log4j 2.x вы можете найти в документации самого Log4j.
log4j.rootCategory=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n
log4j.category.org.springframework.beans.factory=DEBUG
Итог
Поздравляем! Вы только что создали каркасный проект будущего Spring-приложения.
comments powered by Disqus