В следующем примере объявляется, что bean-компонент ReactiveUserDetailsService использует внедренный UserRepository, который предположительно является реактивным Spring Data репозиторием (о котором мы поговорим подробнее в следующей главе):
@Service
public ReactiveUserDetailsService userDetailsService(
UserRepository userRepo) {
return new ReactiveUserDetailsService() {
@Override
public Mono
return userRepo.findByUsername(username)
.map(user -> {
return user.toUserDetails();
});
}
};
}
Здесь Mono
В этом случае операция map() применяется с лямбда-выражением, которое вызывает вспомогательный метод toUserDetails() для объекта User, опубликованного Mono. Это преобразует User в UserDetails. Как следствие, операция .map() возвращает Mono
ИТОГО:
- Spring WebFlux предлагает реактивный веб-фреймворк, модель программирования которого соответствует модели Spring MVC, даже разделяя многие из тех же самых аннотаций.
- Spring 5 также предлагает функциональную модель программирования в качестве альтернативы Spring WebFlux.
- Реактивные контроллеры можно протестировать с помощью WebTestClient.
- На стороне клиента Spring 5 предлагает WebClient, реактивный аналог Spring RestTemplate.
- Хотя WebFlux имеет некоторые существенные изменения для базовых механизмов защиты веб-приложений, Spring Security 5 поддерживает реактивную безопасность с помощью модели программирования, которая не сильно отличается от нереактивных приложений Spring MVC.