Пошаговое руководство по созданию вашей первой конечной точки в Spring
1. Создайте новый проект IntelliJ со следующими настройками:
Остальные настройки оставьте по умолчанию и нажмите «Готово».
2. Получите проект Gradle по умолчанию, настроенный для Java 11 и Spring-boot:
В этом руководстве используется Gradle 7, но Gradle 5.6x/6.3x и выше должен работать.
Прежде всего, нам нужно убедиться, что исходная и целевая совместимость нацелены на Java 11 в build.gradle. Вы будете искать это:
sourceCompatibility = 11 targetCompatibility = 11
Я бы рекомендовал использовать плагин spring-dependency-management, чтобы убедиться, что ваши включенные зависимости Spring не конфликтуют, что будет необходимо в больших проектах.
Весеннее управление зависимостями:
Плагин Gradle, который обеспечивает управление зависимостями и исключениями в стиле Maven.
Основываясь на настроенных метаданных управления зависимостями, подключаемый модуль управления зависимостями будет контролировать версии прямых и транзитивных зависимостей вашего проекта и учитывать любые исключения, объявленные в poms зависимостей вашего проекта.
Чтобы получить последнюю версию плагина spring-dependency-management, посетите https://plugins.gradle.org/plugin/io.spring.dependency-management.
Примером работающего build.gradle может быть:
plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group 'com.demo.project' version '1.0-SNAPSHOT' sourceCompatibility = 11 targetCompatibility = 11 repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } test { useJUnitPlatform() }
На момент написания статьи версия Gradle по умолчанию, упакованная с IntelliJ 2021.1, — 4.10.3, она устарела и приведет к сбоям сборки.
Чтобы протестировать свой дистрибутив Gradle, запустите gradlew -v (./gradlew -v на Mac/Linux) и просмотрите загруженную версию Gradle.
Если вам нужно обновить версию gradle, которую использует ваш проект IntelliJ, запустите
gradlew wrapper --gradle-version=7.0
или для пользователей Mac/Linux:
./gradlew wrapper --gradle-version=7.0
Соберите (gradlew build), и он должен быть успешно собран.
3. Добавьте исходный код приложения Spring:
- Создайте пакет в src/main/java/ с именем com.demo.project для нашего приложения Spring.
- Создайте класс во вновь созданном пакете с именем SpringDemoApplication.
package com.demo.project; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringDemoApplication.class, args); } }
Вы должны иметь возможность запускать приложение Spring с помощью gradlew bootRun (./gradlew bootRun для пользователей Mac/Linux) в терминале. Если вы получаете недопустимую исходную ошибку, то ваш JAVA_HOME не указывает на ту же версию Java, на которую указывает ваш IntelliJ. Чтобы исправить это, либо измените переменную среды JAVA_HOME, чтобы она указывала на Java 11, либо используйте задачу bootRun в интерфейсе IntelliJ.
4. Добавьте конечную точку REST:
- Создайте новый пакет с именем rest.
- Создайте новый класс в rest с именем SpringDemoRestController.
package com.demo.project.rest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class SpringDemoRestController { @GetMapping("/demo") public ResponseEntity<String> helloWorld(@RequestParam(value = "name", defaultValue = "World") String name) { return ResponseEntity.ok(String.format("Hello %s!", name)); } }
- Запустите приложение и перейдите к localhost:8080/demo и просмотрите результаты.
- Также попробуйте localhost:8080/demo?name=friend и просмотрите свои результаты.
5. Напишите тесты приложения и контроллера:
- В каталоге test/java создайте пакет com.demo.project, чтобы добавить тест приложения.
- Создайте свой тест приложения:
package com.demo.project; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class SpringDemoApplicationTest { @Test public void contextLoads() { } }
Этот тест очень прост и просто проверяет, загружается ли контекст приложения без ошибок или исключений.
- Создайте еще один пакет rest внутри test/java/com/demo/project.
- Создайте тесты контроллера отдыха:
package com.demo.project.rest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @SpringBootTest public class SpringDemoRestControllerTest { @Autowired SpringDemoRestController controller; @Test public void getHelloWorld() { ResponseEntity<String> responseEntity = controller.helloWorld("World"); Assertions.assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); Assertions.assertEquals("Hello World!", responseEntity.getBody()); } @Test public void getHelloWorldWithParam() { ResponseEntity<String> responseEntity = controller.helloWorld("friend"); Assertions.assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); Assertions.assertEquals("Hello friend!", responseEntity.getBody()); } }
Эти тесты подключаются к вашему контроллеру, чтобы обеспечить тестирование на уровне контроллера для утверждения соответствующих ответов и бизнес-логики. Чтобы запустить их, откройте терминал и в каталоге вашего проекта запустите gradlew build. Задача сборки выполняет все тесты.
На базовом уровне это то, как настроить веб-сервер Spring-boot с конечной точкой REST и тестами контроллера.