betacode

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

  1. Что такое Spring Boot?
  2. Цель статьи
  3. Создать Spring Boot Project
  4. Некоторые объяснения про Spring Boot
  5. Запуск Spring Boot project
  6. Как запускается Spring Boot?
  7. Технологии для уровня View
  8. Приложение: Конфигурация Server

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:
  • Легко используется для развития приложения на основе Spring с Java или Groovy Spring
  • Минимизирует время развития и поднимает производительность
  • Избегает написание многих кодов прототипа (boilerplate), Annotations и конфигурации XML
  • Легко позволяет вам взаимодействовать с приложениями Spring Boot c экологическими системами Spring как Spring JDBC, Spring ORM, Spring Data, Spring Security и т.д
  • Следует подходу "Принципы конфигурации по умолчанию" чтобы минимизировать время и старания, вложенные для развития приложений.
  • Обеспечивает встроенный Server (Embedded HTTP servers) как Tomcat, Jetty .... чтобы быстро и легко развивать и тестировать веб-приложения
  • Предоставляет инструменты CLI (Command Line Interface) для развития и тестирования приложений Spring Boot (Java или Groovy) из командных строк (command prompt) очень легко и быстро
  • Обеспечивает много плагинов для быстрого развития и тестирования приложения Spring Boot используя инструменты Build, как Maven и Gradle
  • Предлагает много плагинов для легкой работы с контейнерами встроенными базами данных (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 http://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, ...)

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

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

Руководства Spring Boot

Show More