Руководство Spring Boot для начинающих

1- Что такое Spring Boot?

Spring Boot  является  проектом на уровне  IO Execution (уровень выполнения) IO Spring Framework

Spring Boot это следуюший шаг Spring, чтобы сделать его легче в настройке и развитии  приложений. С Spring Boot конфигурации Spring  минимизируется максимально. Spring Boot  поддерживает встроенный контейнер (embedded containers), который  позволяет веб-приложениям работать независимо и без необходимости применения на Web Server
                    
Вы можете использовать spring Boot чтобы создать Java Web приложение, работающее через команду line " Java -jar" или экспортировать War файл для применения  на Web Server как обычно. Spring Boot  дает вам "CLI Tool" для запуска сценариев Spring (spring scripts)
Spring Boot можно объяснить просто иллюстрацией ниже:

Далее перечислены преимущества Spring Boot:

  1. Легко используется для развития приложения на основе  Spring с Java или Groovy Spring
  2. Минимизирует время развития и поднимает производительность
  3. Избегает  написание многих кодов прототипа (boilerplate), Annotations и конфигурации XML
  4. Легко позволяет вам взаимодействовать с приложениями Spring Boot c экологическими системами Spring как Spring JDBC, Spring ORM, Spring Data, Spring Security и т.д
  5. Следует подходу "Принципы конфигурации по умолчанию" чтобы минимизировать время и старания, вложенные для развития приложений.
  6. Обеспечивает встроенный Server (Embedded HTTP servers) как Tomcat, Jetty .... чтобы быстро и легко развивать  и тестировать веб-приложения
  7. Предоставляет инструменты CLI (Command Line Interface) для развития и тестирования приложений Spring Boot (Java или Groovy) из командных строк (command prompt) очень легко и быстро
  8. Обеспечивает много плагинов для быстрого развития и тестирования приложения Spring Boot используя инструменты Build, как Maven и Gradle
  9. Предлагает много плагинов для легкой работы с  контейнерами встроенными базами данных (embedded database) и базами данных хранящиеся в памяти (in- memory Databases).

2- Цель статьи

This post is based on:
  • Eclipse 4.7 (Oxygen)

  • Spring Boot 2.x

В этом документе я буду создавать приложение Hello Spring Boot, это простое веб-приложение использует  Spring Boot, и это приложение будет работать независимо и без необходимости применения на Web Server

Spring Tool Suite (STS)

Для создания приложений Spring Boot на  IDE Eclipse  необходимо установить Spring Tool Suite, который является расширенным  плагином поддерживающий программирование  Spring на Eclipse.

Если вы еще не установили, смотрите инструкции здесь:

3- Создать Spring Boot Project

В Eclipse, создать проект  используя  Spring Tool Suite (STS):
  • File/New/Other...
  • Name: HelloSpringBoot
  • Group: org.o7planning
  • Artifact: HelloSpringBoot
  • Package: org.o7planning.hellospringboot
Проект был создан, ниже показывается структура проекта по умолчанию.
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%20http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.o7planning</groupId>
    <artifactId>HelloSpringBoot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>HelloSpringBoot</name>
    <description>Hello Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4- Некоторые объяснения про Spring Boot

В предыдущем шаге вы создали  Spring boot Project, смотрите содержание pom.xml:

pom.xml

Есть три пункта где нужно обратить внимание в pom.xml (1), (2), (3), как в следующей иллюстрации, Spring Boot позволяет вам упростить объявление библиотек Spring.

spring-boot-starter-parent

spring-boot-starter-parent готовый проект в Spring Boot. Стандартные зависимые библиотеки объявлены в spring-boot-starter-parent, ваш проект только  унаследовал их. Нужно просто объявить <parent> в файле pom.xml вашего проекта.
** spring-boot-starter-parent **
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
Вы можете перезаписать зависимость по умолчанию Spring Boot. Эта тема более четко объяснена здесь:
  • TODO

spring-boot-starter-web

Другие “ Starter”  только обеспечивают зависимости, которые  вам может понадобятся при развитии конкретного типа приложения. Например, при развитии веб-приложений, вам нужна зависимость spring-boot-starter-web
<dependencies>

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
       <scope>test</scope>
   </dependency>

</dependencies>

spring-boot-maven-plugin

Spring-boot-maven-plugin является плагином, который обеспечивает  необходимые библиотеки, помогает вашему проекту работать напрямю без необходимости применять на Web Server. Это помогает создать file jar, который может быть выполнен (Executable)
<plugins>

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>

        <!-- ... -->

</plugins>

5- Запуск Spring Boot project

В предыдущем шаге, вы создали HelloSpringBoot проект используя  Spring Tool Suite и Eclipse, и без каких-либо изменений. Все создается по умолчанию. Теперь вам нужно несколько шагов для запуска приложения
Ваше приложение   HelloSpringBoot запущено, вы можете проверить по ссылке
Сообщение об ошибке " 404 Not Found", когда вы запустили ссылку выше, но это несильно проблематично, потому что ваш проект не имеет никакой страницы.
Создать файл style.css в папке static:
style.css
h1 {
    color: red;
}
И еще раз запустить приложение с ссылкой

Run Configuration...

Вы можете изменить параметры для Server как порт, ContextPath, ... Эти вопросы говорятся в приложении в конце этого документа.

6- Как запускается Spring Boot?

При создании " Spring Boot Web Appp", есть генерируются (generate) 1 класса инструментом " Spring Tool Suite":
  • HelloSpringBootApplication

Ваше приложение начинается выполнением класса HelloSpringBootApplication. Этот класс аннотирован через  @SpringBootApplication
HelloSpringBootApplication.java
package org.o7planning.hellospringboot;

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

@SpringBootApplication
public class HelloSpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloSpringBootApplication.class, args);
    }
}
 
Примечание @SpringBootApplication эквивалентно с использованием @Configuration, @EnableAutoConfiguration и @ComponentScan с их свойствами по умолчанию
Итак @SpringBootApplication помогает вам автоматическую конфигурацию Spring, и автоматически сканировать  (scan) весь проект, чтобы найти компоненты Spring (Controller, Bean, service, ...)

7- Technologies for View Layer

Next tutorial:

8- Приложение: Конфигурация Server

Выше вы запустили приложение Spring Boot, вы можете изменить конфигурации Server, как Port, ContextPath, ....
Изменить Server HTTP Port:
Вы можете изменить другие свойства, если вы хотите, Eclipse предложит свойства которые могут быть изменены и их значение.