Павел
11 уровень

Spring — это не страшно, или как стартовать WEB-сервер со Spring Boot за 5 минут

Статья из группы Java Developer
Содержание:
  1. Как стартовать WEB-сервер со Spring Boot за 5 минут
  2. Как подключить базу данных для студенческого проекта за 5 минут
  3. Как наполнить h2 базу данных (и немного Hibernate)
  4. Как сделать проект лаконичным с помощью Lombok
  5. Продолжаем наполнять БД
  6. Как задать вопрос БД
  7. Обзор темы про лямбда выражения и streamAPI
  8. Маппинг ответов БД
  9. Немного о spring context
  10. Паттерн DTO
  11. REST-Controller
  12. Cookie & Headers
  13. Обработка исключений в контроллерах Spring Boot
  14. Как разместить Spring Boot проект на Heroku
Для начала создаем мавен проект. В pom файл пишем следующие зависимости:

<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java.version>1.8</java.version>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/><!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
<properties> — это настройки, конкретно тут указан уровень Java. <parent> говорит, что все зависимости будут выкачены с версией, которая соответствует указанной (2.2.0.RELEASE). <dependencies> содержит тот самый spring-boot-starter-web, который стартанет. Версия тут не нужна, так как она указана в <parent> В пакете java необходимо создать пакет: ru.java.rush. В созданном пакет создаем класс Applications и наполняем следующим содержимым:

package ru.java.rush;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Applications {

    public static void main(String[] args) {
        SpringApplication.run(Applications.class);
    }
}
Давайте стартанем проект с помощью зеленой кнопки. Когда в консоли появятся логи:

2020-12-05 21:05:27.598  INFO 2546 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-12-05 21:05:27.601  INFO 2546 --- [           main] ru.java.java_rush.Applications           : Started Applications in 0.971 seconds (JVM running for 1.446)
Это будет значить, что TomcatWebServer стартанул на порту 8080. Давайте откроем браузер и наберем http://localhost:8080/ Так как никакой информации сервер не отправляет, то отобразится примерно следующее:

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Dec 05 21:36:10 MSK 2020
There was an unexpected error (type=Not Found, status=404).
No message available
Но сервер работает: попробуйте остановить приложение, а потом обновить страницу браузера, и он скажет, что "Страница не найдена". Вы только что написали приложение на Java, которое поднимает веб-сервер! Тоже самое без Spring заняло бы времени в десять раз больше, а нервов — в тысячу! В общем, изучайте Spring, не бойтесь, постепенно двигайтесь к цели, и у вас все получится! Давайте теперь посмотрим, как быстро подключить сюда учебную базу. Основная цель цикла статей – это показать, что не стоит бояться пробовать учиться Spring framework и Spring boot, это не так сложно, как может показаться. Однако без знания JavaCore, и основных понятий ООП(класс, интерфейс, наследование и пр.) ваше время будет потеряно зря. Если у вас нет этих знаний, не отчаиваетесь, 1 - 2 месяца учебы все исправят, после того как освоите возвращайтесь сюда. Если не знаете с чего начать то возьмите это: «Java 8. Руководство для начинающих. Герберт Шилдт» . Цикл статей познакомит вас с основными современными практическими темами, касательно Spring framework и Spring boot. Формат каждой статьи предполагает один небольшой пример (или переходящий на несколько статей пример), небольшое объяснение и ссылки на теорию или на другие примеры, так же всячески поощряется самостоятельный поиск дополнительной информации по теме. Предполагается, что по окончанию цикла вы должны будете уметь создать небольшое вэб-приложение на основании технологий Spring framework и Spring boot. Для понимания что такое Spring прочитайте прямо сейчас эту простую и понятную статью: Spring для ленивых. Основы, базовые концепции и примеры с кодом.. Если ищете более серьезную информацию по теме, то ознакомьтесь со следующим списком: Переводные и не такие простые для понимания, статьи с Хабра: Что такое Spring Framework? От внедрения зависимостей до Web MVC Spring MVC: создание веб-сайтов и RESTful сервисов Переводная документация, очень рекомендую прямо сейчас по смотреть что там есть Книги! Для начала нужно ими обзавестись, читать, конечно, следует небольшими порциями: Spring в действии | Уоллс Крейг (Spring 3) – рекомендую начать именно с этой книги, прочитав только первую главу(так как остальное уже устарело), можно поискать в интернете В сети гуляет частичный перевод Spring в действии | Уоллс Крейг (Spring 5) – можно по пробовать взять ее за основу, изложение оригинальной книги простое и с примерами. Хорошим вариантом основного источника знаний является: Spring 5 для профессионалов | Козмина Юлиана, Харроп Роб – на русском языке, можно поискать в интернете Книга объемная и академичная, чтобы после прочтения двух страниц в ней не разочароваться, вы должны это понимать. Лично я делал так: читал какую-то часть в книге (иногда не один раз), а потом шел искать по этой теме примеры в интернете.
Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Василий Бабин Уровень 28 Expert
9 ноября 2021
Отлична серия статей! Спасибо большое! Рекомендую к прохождению, но обязательно ходить по всем ссылкам! Начинать их проходить, мне кажется, лучше уровня JR так после 20-го.
Павел Уровень 11
8 декабря 2020
😂😂😂😂😂 Огромный респект администрации за картинки! Страшно представить, что бы было на заставке, к третьей статье про наполнение базы😆😆😆
Justinian Уровень 41 Master
6 декабря 2020
Прикольный цикл статей, коротко, понятно и по делу, молодец, понравилось. Единственно что режет глаз - java_rush не соответствует Java naming conventions, в джаве underscore в именах пакетов не используется, посмотри на импорты в классах, я даже сходу не могу сказать, видел ли я когда-то андерскоры в именах пакетов в принципе... Есть допустимые исключения, если keywords или спецсимволы содержатся в имени пакета, то их можно заменить, но это специфические кейсы и это не наш случай. Это JFYI, вдруг будет полезно. А так еще раз повторюсь, все очень круто, надеюсь у тебя будут еще идеи , формат материалов очень прикольный.
hidden #2322530 Уровень 41
5 декабря 2020
статья звучит примерно вот так. как выжить в лесу? ну для начала давайте заберемся в глухой лес, и будем выживать. итак, первое что нам надо, достать нож и развести огонь. как выковать нож в глухом лесу? расскажем в другой лекции! не переключайтесь.