Как создать Spring Boot веб-приложение в Intellij IDEA Community Edition

In English

Всем привет! В этом посте мы сосредоточимся на одной простой задаче: быстро создать веб-приложение на Spring Boot в IntelliJ IDEA Community Edition.

Те, у кого установлена версия EAP или Ultimate, могут обратиться к этому мануалу, который учитывает встроенный в IDE создатель проекта при помощи Spring Initializr. Менее удачливым людям (например, мне) придется сделать немного больше, но при этом мы узнаем немного больше о создании проектов при помощи Spring Boot и Maven. И, честно говоря, это не намного больше, чем использование Initializr в крутых версиях IntelliJ.

Существует два подхода к созданию проекта на Spring Boot. Один из них - использовать веб-приложение Spring Initializr для генерации шаблона проекта - это по-идее проще, а другой - вручную добавить зависимости в пустой Maven-проект.

Лично я думаю, что оба подхода занимают примерно одинаковое количество времени, поэтому выбирайте любой из них - он не потратит кучу Вашего драгоценного времени. Чтобы использовать первый подход, начните с шага 1, а если вы хотите использовать второй, то можно сразу перейти к шагу 4.

Ну что ж, начнем!

Шаг 1. Создаем maven-проект

  • Все начинается с проекта. Давайте создадим его на приветственном экране Intellij:
 
  •  Выберите Maven из списка типов проектов. Щелкните Next.
  • Теперь надо придумать GroupId и ArtifactId для проекта. Смотрим эту страницу из официальных мануалов Maven чтобы узнать как их выбрать. Обычно GroupId это Ваш (или Вашей фирмы) домен в обратном порядке. Если нет ни того, ни другого - не проблема, используем имя или ник, например com.ivanivanov. ArtifactId - имя проекта.
  • Выбираем имя проекта в IDE и где он будет находиться на жестком диске. Я обычно выбираю имя проекта такое же как ArtifactId чтобы не было путаницы.
  • Вот и все! Проект готов. Почему мы используем Maven? Во-первых, это позволит нам подтянуть любую зависимость просто введя ее GroupId и ArtifactId, во вторых в таком проекте автоматически создается очень удобная структура папок которая является де-факто стандартов для Java приложение. Почитать об этой структуре можно тут.

Шаг 2. Добавим зависимости Spring boot

  • Вставляем их в файл pom.xml в корне проекта и включаем авто-импорт зависимостей чтобы не жать кнопку Импорт при каждом изменении помника.

Шаг 3. Создаем минимальный набор классов

  • Теперь, когда зависимости подключены, понадобится создать минимально жизнеспособный код, чтобы все эти библиотеки работали. Прежде всего, последуем бест практисам и создадим корневой пакет в каталоге src/main/java, названный именем проекта.
Имя пакета должно быть com.shortn0tes.springbootapp. Что ж, все ошибаются...
  • Spring Boot запускает сервлет-контейнер Tomcat и Ваше приложение при запуске этого метода:
    public static void main(String[] args) {
    Так создадим класс в котором он будет содержаться:
  • Вставьте этот код в новый класс: Не забываем аннотацию @SpringBootApplication! Благодаря ней все и работает.
  • Как уже видно, названия классов подсветились красным потому что они не импортированы:


    Чтобы автоматически импортировать зависимость на класс в IntelliJ IDEA, щелкните на красном имени класса и нажмитеAlt+Enter:
  • Вот и все! Минималистичное Spring boot приложение готово. Теперь можно пройти к шагу 6

Шаг 4. Используем Spring Initializr

В использовании Spring Initializr все просто и понятно: заходим на сайт, настраиваем проект и получаем Zip архив по щелчку на гигантскую зеленую кнопку "Generate".

Куда-нибудь распаковываем его и видим следующее:

Шаг 5. Импортируем сгенерированный проект в IntelliJ IDEA

  • Вместо создания проекта, кликаем на Import project.
  • Первые 2 окна важны: нужно указать куда был распакован проект и указать Maven в качестве модели импорта.

Дальше просто щелкаем Next пока проект окончательно не импортируется. Да, все так просто.

Шаг 6. Создаем конфигурацию запуска

  • Чтобы запустить наше Spring Boot приложение, надо создать конфигурацию запуска. Щелкаем Edit configurations...
  • Создаем новую конфигурацию типа Application. Называем ее как-нибудь и выбираем наш класс с методом main():

  • Вот и все. По щелчку на Run (или сочетанию клавиш Shift+F10) увидим что приложение Spring boot запустилось на http://localhost:8080:

Чтобы удостовериться что оно работает, придется сделать его несколько более интерактивным...

Step 7. (Опционально) Добавим как минимум 1 контроллер

  • Контроллеры - это часть архитектурного паттерна MVC. Spring позволяет запросто создавать контроллеры для веб-приложений, навешивая аннотации на класс с методами. Создадим новый пакет для контроллеров в корневом пакете, а также класс для нового контроллера:
Spring boot при запуске сам просканирует корневой пакет (т.е. тот в котором находится класс с аннотацией @SpringBootApplication и методом public static void main()) и внесет все бины, включая наш новый контроллер. Теперь можно запустить приложение и увидеть что оно работает:


Как всегда, готовый проект можно скачать ТУТ.

Дополнение

Для полноты рассказа покажу, как добавить любые зависимости в Ваш проекта при помощи Maven. Это необязательно для создания Spring Boot приложения, но это поможет понять начинающему, что делать дальше.
  1. Ищем <имя библиотеки> maven.
  2. Обычно все выбирают либо последнюю стабильную версию (5.0.0 в данном случае) либо самую используемую.
  3. Копируем текст в pom.xml, а именно в секцию <dependencies>.

Comments

  1. спасибо, первый раз столкнулся со spring и не знал что делать, а тут все по полочкам

    ReplyDelete
    Replies
    1. не все не хватает spring-web в pom.xml

      Delete
  2. Исусий гайд. Заслуживает быть в первой строке выдачи в гугле :)

    ReplyDelete
    Replies
    1. Выше всех похвал :-) Спасибо!

      Delete
  3. По-моему в IntelliJ есть встроенный функционал Spring Initializr (без сайта)

    ReplyDelete
    Replies
    1. True dat, но он появляется только в Ultimate.

      Delete
  4. Спасибо огромное! Этот гайд очень нужен и актуален.

    ReplyDelete
  5. Огромное спасибо!
    С удовольствием почитал бы про создание веб-приложения с шаблонизаторами.

    ReplyDelete
  6. Спасибо большое за статью! Всё просто и понятно.

    ReplyDelete
  7. Отличная статья, помогла! Одно замечание: в pom.xml стоило бы добавить


    org.springframework.boot
    spring-boot-maven-plugin




    ReplyDelete
  8. Всё делаю по гайдам таким, всё равно каждая зависимость красным светится.

    ReplyDelete
  9. Отсутствуют картинки(

    ReplyDelete
  10. на 6ом шаге при запуске получил ошибку:
    No active profile set, falling back to default profiles: default
    подскажите чего не хватает? сделал все по шагам слово в слово

    ReplyDelete
  11. На шаге 2 по адресу https://projects.spring.io/spring-boot/ указанного XML для зависимостей не нашел, я новичок в этом напишите пожалуйста актуальную ссылку

    ReplyDelete
  12. This comment has been removed by the author.

    ReplyDelete

Post a Comment