Articles of spring webflux

Как создать класс данных реализует специальные UserDetails Spring Secuirty

Я пытаюсь перенести некоторые примеры кода spring-webflux в kotlin. В настоящее время я хочу преобразовать образец Spring Mongo в kotlin. Существует User , оригинальная версия Data Mongo выглядит: @Data @ToString @Builder @NoArgsConstructor @AllArgsConstructor @Document class User implements UserDetails { @Id private String id; private String username; private String password; @Builder.Default() private boolean active = true; […]

Spring WebFlux: разрешен только один абонент

Я пишу простое приложение с Spring 5 Webflux и Kotlin. Я пытаюсь реализовать конечную точку PUT следующим образом: PUT("/confs/{id}", { val id = it.pathVariable("id") ServerResponse.ok().body(service.save(it.bodyToMono(Item::class.java)), Item::class.java) }) Трюк в спасении заключается в том, что я пытаюсь прочитать название города из объекта, разрешить геокоординаты, перезаписать их в исходном элементе, а затем сохранить в Mongo, используя Spring […]

Поддержка Spring WebFlux и Kotlin: как сделать интеграционные тесты?

https://docs.spring.io/spring-framework/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/kotlin.html#easy-testing-kotlin-and-junit-5 показывает пример кода для тест интеграции. Однако я не понимаю эту строку: val application = Application(8181) 8181 должен быть номер порта. Но откуда взялось Application ? Является ли это классом приложения Spring Boot ?

'Mono.and ()' не может вызываться с предоставленными параметрами

Я пытаюсь запустить образец проекта, расположенный здесь . Однако я вижу Error:(38, 22) Kotlin: None of the following functions can be called with the arguments supplied: public final fun and(p0: ((Subscriber<in Any!>!) -> Unit)!): Mono<Void!>! defined in reactor.core.publisher.Mono public final fun and(p0: Publisher<*>!): Mono<Void!>! defined in reactor.core.publisher.Mono в классе buildResponse функции buildResponse : internal class […]

Функциональный маршрут Spring Web Flux (реактивный) не работает должным образом с Kotlin

Привет, хорошие люди, заинтересованные в написании весенних приложений в Котлине. Я играю с моментальным снимком Spring Boot 2.0.0 и spring-webflux . Этот фрагмент кода: @Component class TestRouter() : RouterFunction<ServerResponse> { override fun route(request: ServerRequest) = route(request) { "/".route { GET("/hello") { ServerResponse.ok().body(BodyInserters.fromObject("World")) } "/{id}".route { GET("/hello") { ServerResponse.ok().body(BodyInserters.fromObject("World ${request.pathVariable("id")}")) } } } } } не […]

Проблема с помехами в WebFlux WebTestClient и Kotlin

Я создаю прототип для нового приложения, используя Spring Webflux и Kotlin. Spring Webflux содержит WebTestClient для модульных тестов. Согласно документации, я должен проверить результаты вызова REST следующим образом: @Test fun getVersion_SingleResult_ContentTypeJson_StatusCodeOk_ContentEqualsVersion() { //given var version = Version("Test", "1.0") val handler = ApiHandler(version!!) val client = WebTestClient.bindToRouterFunction(ApiRoutes(handler).apiRouter()).build() //expect val response = client.get().uri("/api/version/").exchange() response.expectStatus().isOk response.expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8) response.expectBody(Version::class.java).isEqualTo(version) } […]

Как проверить, нет ли Моно?

Я разрабатываю приложение с Spring Boot 2.0 и Kotlin, используя среду WebFlux. Я хочу проверить, выходит ли пользовательский идентификатор перед сохранением транзакции. Я застрял в простой вещи, такой как проверка, если моно пусто. fun createTransaction(serverRequest: ServerRequest) : Mono<ServerResponse> { val transaction = serverRequest.body(BodyExtractors.toMono(Transaction::class.java)) transaction.flatMap { val user = userRepository.findById(it.userId) // If it's empty, return badRequest() […]

Настройка Jackson для использования SNAKE_CASE «глобально» в Spring Boot 2.0.0.M1

Я использую Spring Boot 2.0.0.M1 (следовательно, Spring 5.0.0.RC1 ). Я пытаюсь настроить его для использования PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE но я пока не работаю. Я пробовал: Файл application.yml с: spring: jackson: property-naming-strategy: SNAKE_CASE Настройка компонента Jackson2ObjectMapperBuilder : @Bean @Primary open fun jacksonBuilder(): Jackson2ObjectMapperBuilder { val jacksonMapperBuilder = Jackson2ObjectMapperBuilder() .failOnUnknownProperties(false) .modules(JavaTimeModule(), KotlinModule()) .propertyNamingStrategy(PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE) logger.info { "Jackson2ObjectMapperBuilder configured successfully…" } […]

Декодирование ByteArray с помощью Spring 5 Framework WebFlux

Я пытаюсь использовать новую среду Spring WebFlux с kotlin. И я не могу найти, где я ошибаюсь в этом коде (myService): fun foo(): Flux<ByteArray> { val client = WebClient.create("http://byte-array-service") return client .get() .uri("/info") .accept(MediaType.APPLICATION_OCTET_STREAM) .exchange() .flatMapMany { r -> r.bodyToFlux(ByteArray::class.java) } } Этот метод возвращает Flux с 7893 байтами, и я знаю, что не все […]

Ошибка загрузки Spring Boot + Kotlin

У меня есть приложение Spring Boot 2.0.0.M2 (с WebFlux), написанное в Котлине. Я использую для определения / объявления «аннотаций» для тестовых случаев, чтобы избежать некоторой конфигурации шаблонов; что-то вроде: import java.lang.annotation.ElementType import java.lang.annotation.Inherited import java.lang.annotation.Retention import java.lang.annotation.RetentionPolicy import java.lang.annotation.Target … @Inherited @Target(ElementType.TYPE) @AutoConfigureWebTestClient // TODO: FTW this really does?! @Retention(RetentionPolicy.RUNTIME) //@kotlin.annotation.Target(AnnotationTarget.TYPE) //@kotlin.annotation.Retention(AnnotationRetention.RUNTIME) @ActiveProfiles(profiles = arrayOf("default", […]