Skip to content

Commit 0d08574

Browse files
committed
add
1 parent 5e249a3 commit 0d08574

File tree

30 files changed

+1040
-0
lines changed

30 files changed

+1040
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.gradle/
2+
build/

java-advanced-ru/multithreading-spring/.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-spring/.idea/checkstyle-idea.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-spring/.idea/compiler.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-spring/.idea/gradle.xml

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-spring/.idea/misc.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-spring/.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
test:
2+
gradle test
3+
4+
start:
5+
gradle bootRun

java-advanced-ru/multithreading-spring/README.html

Lines changed: 81 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Многопоточность в Spring
2+
3+
В этом домашнем задании мы познакомимся с модулем Spring WebFlux, который позволяет писать асинхронный неблокирующий код. Он несколько отличается от привычного Spring MVC. Чтобы понять разницу, напишем простой CRUD сущности с использованием этого модуля.
4+
5+
## Ссылки
6+
7+
* [Пример простого приложения на Spring WebFlux](https://www.baeldung.com/spring-webflux)
8+
* [Репозиторий ReactiveCrudRepository](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/reactive/ReactiveCrudRepository.html)
9+
10+
## build.gradle
11+
12+
## Задачи
13+
14+
* Изучите код в файле *build.gradle*. Обратите внимание, какие зависимости нужны для реактивного приложения.
15+
16+
## src/main/resources/application.yml
17+
18+
## Задачи
19+
20+
* Изучите конфигурацию приложения. Обратите внимание на комментарии в коде
21+
22+
## src/main/java/exercise/model/User.java
23+
24+
В этом файле находится модель пользователя.
25+
26+
## Задачи
27+
28+
* Изучите код модели. Обратите внимание на то, что аннотации `javax.persistance` не используются в Spring Webflux.
29+
30+
## src/main/java/exercise/repository/UserRepository.java
31+
32+
В этом файле нужно создать репозиторий для общих операций CRUD с использованием типов Project Reactor.
33+
34+
## Задачи
35+
36+
* Создайте репозиторий `UserRepository`, который будет реализовывать интерфейс `ReactiveCrudRepository`. Этот интерфейс позволяет использовать типы Project Reactor. Большинство нужных методов уже определены в этом интерфейсе, изучите их в документации. Более сложные специфические запросы при необходимости можно определить, добавив аннотацию @Query к методу и указав фактический sql. Но в случае нашего простого CRUD делать этого не понадобится.
37+
38+
## src/main/java/exercise/service/UserService.java
39+
40+
Бизнес-логику нашего приложения вынесем в отдельный сервис. В файле уже создан класс сервиса `UserService`, который будет использовать наш репозиторий, и один из методов.
41+
42+
## Задачи
43+
44+
* Добавьте в класс остальные методы для реализации основных CRUD операций с сущностью пользователя: создание нового пользователя, просмотр конкретного пользователя, обновление и удаление пользователя. Методы сервиса должны возвращать тип Project Reactor `Mono<T>`.
45+
46+
## src/main/java/exercise/controller/UserController.java
47+
48+
В файле создан контроллер `UserController`, который обрабатывает запросы к приложению, и один из методов. Контроллер использует сервис `UserService`. В Spring WebFlux существует два подхода при создании контроллера: использование аннотаций и функциональный способ. Подход, основанный на аннотациях `org.springframework.web.bind.annotation` уже знаком нам, поэтому мы будем использовать его.
49+
50+
## Задачи
51+
52+
* Допишите необходимые методы, которые будут обрабатывать запросы на создание нового пользователя, просмотр, редактирование и удаление пользователя. Методы контроллера должны возвращать тип `Mono<T>`.
53+
54+
* Запустите приложение. При помощи Postman попробуйте отправлять различные запросы. Убедитесь, что выполненные запросы отражаются на базе данных.
55+
56+
## Подсказки
57+
58+
* При необходимости подглядывайте в тесты за дополнительной информацией по работе приложения
59+
60+
* Изначально при старте приложения база данных пуста. Чтобы проверить работу приложения, нужно будет сначала самостоятельно добавить нескольких пользователей.

0 commit comments

Comments
 (0)