КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 716134 томов
Объем библиотеки - 1422 Гб.
Всего авторов - 275431
Пользователей - 125270

Новое на форуме

Новое в блогах

Впечатления

Masterion про Харников: Вечерний Чарльстон (Альтернативная история)

До Михайловского не дотягивает. Тема интересная, но язык тяжеловат.

2 Potapych
Хрюкнула свинья, из недостраны, с искусственным языком, самым большим достижением которой - самый большой трезубец из сала. А чем ты можешь похвастаться, ну кроме участия в ВОВ на стороне Гитлера, расстрела евреев в Бабьем Яру и Волыньской резни?.

Рейтинг: 0 ( 1 за, 1 против).
Lena Stol про Чернов: Стиратель (Попаданцы)

Хорошее фэнтези, прочитала быстро и с интересом.

Рейтинг: 0 ( 0 за, 0 против).
Влад и мир про серию История Московских Кланов

Прочитал первую книгу и часть второй. Скукота, для меня ничего интересно. 90% текста - разбор интриг, написанных по детски. ГГ практически ничему не учится и непонятно, что хочет, так как вовсе не человек, а высший демон, всё что надо достаёт по "щучьему велению". Я лично вообще не понимаю, зачем высшему демону нужны люди и зачем им открывать свои тайны. Живётся ему лучше в нечеловеческом мире. С этой точки зрения весь сюжет - туповат от

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
DXBCKT про Дорин: Авиатор: Назад в СССР 2 (Альтернативная история)

Часть вторая продолжает «уже полюбившийся сериал» в части жизнеописания будней курсанта авиационного училища … Вдумчивого читателя (или слушателя так будет вернее в моем конкретном случае) ждут очередные «залеты бойцов», конфликты в казармах и «описание дубовости» комсостава...

Сам же ГГ (несмотря на весь свой опыт) по прежнему переодически лажает (тупит и буксует) и попадается в примитивнейшие ловушки. И хотя совершенно обратный

  подробнее ...

Рейтинг: +2 ( 2 за, 0 против).
DXBCKT про Дорин: Авиатор: назад в СССР (Альтернативная история)

Как ни странно, но похоже я открыл (для себя) новый подвид жанра попаданцы... Обычно их все (до этого) можно было сразу (если очень грубо) разделить на «динамично-прогрессорские» (всезнайка-герой-мессия мигом меняющий «привычный ход» истории) и «бытовые-корректирующие» (где ГГ пытается исправить лишь свою личную жизнь, а на все остальное ему в общем-то пофиг)).

И там и там (конечно) возможны отступления, однако в целом (для обоих

  подробнее ...

Рейтинг: +2 ( 2 за, 0 против).

Spring in Action Covers Spring 5-1--11 [Автор неизвестен -- Компьютеры] (fb2) читать постранично, страница - 119


 [Настройки текста]  [Cбросить фильтры]

метод, требуемый UserDetailsService, loadUserByUsername(). Внутри этого метода вы используете внедренный UserRepository для поиска пользователя по заданному имени пользователя. Если имя не найдено, вы бросаете исключение UsernameNotFoundException. Но если он найден, то вы вызываете вспомогательный метод toUserDetails() для возврата результирующего объекта UserDetails.

В реактивной конфигурации безопасности вы не переопределяете метод configure(). Вместо этого вы объявляете bean-компонент ReactiveUserDetailsService. ReactiveUserDetailsService является реактивным эквивалентом UserDetailsService. Как и UserDetailsService, ReactiveUserDetailsService требует реализации только одного метода. В частности, метод findByUsername() возвращает Mono<userDetails> вместо необработанного объекта UserDetails.

В следующем примере объявляется, что bean-компонент ReactiveUserDetailsService использует внедренный UserRepository, который предположительно является реактивным Spring Data репозиторием (о котором мы поговорим подробнее в следующей главе):

@Service

public ReactiveUserDetailsService userDetailsService(

      UserRepository userRepo) {

   return new ReactiveUserDetailsService() {

      @Override

      public Mono<UserDetails> findByUsername(String username) {

         return userRepo.findByUsername(username)

            .map(user -> {

               return user.toUserDetails();

            });

      }

   };

}

Здесь Mono<UserDetails> возвращается по мере необходимости, но метод UserRepository.findByUsername() возвращает Mono<User>. Поскольку это Mono, вы можете вызвать операции, такие как map(), чтобы преобразовать Mono<User> в Mono<UserDetails>.

В этом случае операция map() применяется с лямбда-выражением, которое вызывает вспомогательный метод toUserDetails() для объекта User, опубликованного Mono. Это преобразует User в UserDetails. Как следствие, операция .map() возвращает Mono<UserDetails>, который является именно тем, что требуется для ReactiveUserDetailsService.findByUsername().

ИТОГО:

- Spring WebFlux предлагает реактивный веб-фреймворк, модель программирования которого соответствует модели Spring MVC, даже разделяя многие из тех же самых аннотаций.

- Spring 5 также предлагает функциональную модель программирования в качестве альтернативы Spring WebFlux.

- Реактивные контроллеры можно протестировать с помощью WebTestClient.

- На стороне клиента Spring 5 предлагает WebClient, реактивный аналог Spring RestTemplate.

- Хотя WebFlux имеет некоторые существенные изменения для базовых механизмов защиты веб-приложений, Spring Security 5 поддерживает реактивную безопасность с помощью модели программирования, которая не сильно отличается от нереактивных приложений Spring MVC.