Spring Framework. HelloWorld Example с Maven и без XML

Всем, привет! Продолжаю серию своих уроков, посвященных программированию на языке Java и в частности Spring Framework. В предыдущих статьях мы научились добавлять jar-файлы (библиотеки) в пустой Java-проект, создавать простое Spring приложение сконфигурированное на XML как с ручным добавлением библиотек, так и с помощью сборщика Maven.

И сегодня мы создадим с Вами Spring приложение со сборщиком Maven и без XML. Такой тип конфигурирования приложения еще называют java-based или конфигурирование с помощью аннотаций.

Хочу отметить, что текущий стандарт де-факто в современном «взрослом» java-производстве (в современной enterprise-разработке) это SpringBoot + Maven. И все сконфигурировано аннотациями. Так что мы изучаем с Вами в этой статье почти что «взрослый» вариант. Поехали!

На этот раз уже не будем тратить время на создание Maven-проекта из консоли и создадим его прямо из IDE. Как и всегда, я использую JetBrains IntelijIdea.

Итак, открываем нашу IDE. Если у Вас открылся прежний проект, то выбираем File / New / Project. Если вы открываете среду разработки в первый раз, то видим следующее окно:

Жмем «Create New Project». В следующем окне, в списке справа выбираем Maven. В нижний список через какое-то время подгрузятся все возможные варианты арчетайпов (о них мы говорили в предыдущей статье). Не выбирайте ничего и жмите Next.

В следующем окне задаем местоположение и имя проекта. В раскрывающимся списке внизу — вводим группу нашего будущего проекта и название артефакта. Группа появится в Pom-файле в теге <groupId>, а артефакт — именно под его именем будет генерироваться будущий jar-ник и под его именем проект попадет в локальный репозиторий Maven (что позволит его потом переиспользовать):

Жмем Finish.

Если внизу у Вас всплыло вот такое вот окошко, обязательно нажмите Enable Auto-Import:

Это позволит Maven’у автоматически импортировать зависимости при добавлении новых.

Находим в дереве проекта файл pom.xml, это как раз и есть конфигурационный файл сборщика и вставляем туда следующее:

На что стоит обратить внимание? Смотрите, мы вынесли версию Spring’а как отдельное свойство наверх в тег «properties«:

<properties>
        <org.springframework.version>5.2.3.RELEASE</org.springframework.version>

</properties>

Это дает нам возможность просто потом использовать ее как ссылку вида ${org.springframework.version}. И при необходимости поменять версию — мы поменяем ее 1 раз, а не несколько, как если бы вставляли бы ее в каждый тег dependency.

Зависимости, которые я указал в этом файле — это собственно те самые библиотеки, необходимые для работы фреймворка Spring в Вашем проекте, именно их мы ранее подгружали в ручную.

Теперь нам осталось добавить основной код нашего проекта и наслаждаться! Поехали!

Переходим на дерево проекта справа (вкладка так и называется — Project), разворачиваем ее до уровня java (иконка папки выделена синим), вызываем на ней контекстное меню, там выбираем пункт New / Package и вводим название пакета. У меня это:

Как видно, пакет с одной стороны совпадает с Мвановским groupId, с другой стороны отражает суть проекта.

И так, для начала создадим привычный уже нам Бин:

В комментариях я специально пометил что значит та или иная строчка. Кстати, я бы еще добавил, там где в комментарии написано «поле», что это «приватное поле». То есть оно видно только в рамках класса. Обратится к нему извне можно только через геттер или сеттер. Ну или через конструктор, как в моем примере.

А теперь мы сделаем с Вами святая святых современного Spring-проекта — класс конфигурации или просто конфиг. Собственно это и есть аналог-заменитель xml-конфигурации. И сообщаем мы Спрингу о том, что это конфигурация специальной аннотацией @Configuration.

Вот его код:

У нас есть 2 метода, первый из них закомментирован.

Собственно в первом методе мы создаем бин, инициализируя при создании переменную message через конструктор. А во втором методе через сеттер. Вот и вся разница. Вы можете раскомментировать первый, соответственно закоментировав второй и попробовать оба. Какой способ лучше — решать Вам, но в первом очевидно меньше кода.

Ну и нам осталось написать наш главный класс с методом Main:

Разница с предыдущими моими статьями (то есть, с конфигурацией через xml, что теперь мы используем класс AnnotationConfigApplicationContext для конфигурирования Спрингового контейнера. У него в аргумент передается класс конфигуратора, а не путь до файла beans.xml. Вот и все.

Запускаем приложение и вуаля…. (я надеюсь, как запускать приложение Вы уже знаете??? )

А вот и наглядная видео-версия статьи:

Вливайтесь в общение

1 комментарий

  1. Спасибо! Мне пригодилось! Разжевано все по полочкам!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *