Tutorial: arranque de resorte reactivo

El mes pasado, Trisha Gee (JetBrains) present贸 en SpringOne una demostraci贸n de c贸mo crear una aplicaci贸n de precio de acciones en tiempo real usando Spring Boot, Kotlin y JavaFX. La demostraci贸n en vivo se grab贸 y est谩 disponible como un video de 70 minutos .

El 18 de diciembre, Trisha complet贸 la publicaci贸n en dzone.com del tutorial reactivo Spring Boot basado en este video, como una serie de videos m谩s cortos con una publicaci贸n de blog acompa帽ante que explica cada paso m谩s lentamente y con m谩s detalle.

Tuve la idea de traducir este tutorial al ruso. Sin embargo, Trisha respondi贸 cort茅smente con mi pregunta sobre esto:
"D茅jame consultar con mi organizaci贸n. Me encantar铆a traducirlo, pero podr铆amos tener una forma preferida de traducir las cosas ".

As铆 que decid铆 limitarme a una descripci贸n general de este tutorial, que incluye la siguiente serie de lecciones:

  1. Construyendo un Servicio REST de Kotlin
  2. Un cliente REST para secuencias reactivas
  3. Una aplicaci贸n JavaFX Spring Boot
  4. Un gr谩fico de l铆neas JavaFX
  5. Configuraci贸n autom谩tica para beans compartidos
  6. Mostrar datos reactivos
  7. Suscribirse M煤ltiples suscriptores
  8. Servidor Kotlin RSocket
  9. Cliente Java RSocket
  10. Perfiles de primavera para cambiar clientes

El tutorial es una serie de lecciones en las que se crear谩 una aplicaci贸n Spring Boot completa con la interfaz interna de Kotlin, el cliente Java y la interfaz de usuario JavaFX.

Parte 1. Crear un servicio REST en Kotlin


La primera parte del tutorial describe c贸mo crear una aplicaci贸n Spring Boot en Kotlin, que sirve como el lado del servidor de la aplicaci贸n. Se crear谩 un servicio REST reactivo, al que puede conectarse en las siguientes partes del manual.

Esta entrada de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Esta parte del tutorial incluye los siguientes pasos:

  • Crear un proyecto de servicio Spring Boot
  • Estructura del proyecto Spring Boot
  • Crear un controlador REST
  • Crear una clase de datos para precios de acciones
  • Generaci贸n de precios y retorno
  • Lanzamiento de la aplicaci贸n

Despu茅s de completar estos pasos en la parte 1 del tutorial, se crear谩 una aplicaci贸n Kotlin Spring Boot simple que usa Reactive Streams para emitir una cotizaci贸n de acciones generada aleatoriamente una vez por segundo.

El c贸digo completo para la parte 1 del tutorial est谩 disponible en GitHub .

Parte 2. Cliente REST para flujos reactivos


La parte 2 del tutorial muestra c贸mo crear un cliente Java reactivo en Spring que se conecta a un servicio REST que transmite los precios de las acciones una vez por segundo. Este cliente se utilizar谩 en secciones posteriores del manual. Durante el desarrollo, se utilizar谩 un proceso basado en TDD para crear el cliente y probarlo.

Esta entrada de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Esta parte del tutorial incluye los siguientes pasos:

  • Crear un proyecto para un cliente
  • Crear una clase de cliente
  • Crear una prueba de cliente
  • Crear un m茅todo de precio base de cliente
  • Crear una clase para mantener los precios de las acciones.
  • Agregar aserciones a la prueba
  • Conecte el cliente al servicio REST
  • Ejecutar prueba de integraci贸n
  • Afirmaciones m谩s exhaustivas en la prueba de integraci贸n

Probar aplicaciones reactivas no es una habilidad f谩cil, y ciertamente hay formas mucho mejores de hacerlo que en este simple ejemplo. Sin embargo, se utiliz贸 con 茅xito una prueba de integraci贸n para determinar la API y la funcionalidad del cliente para los precios de las acciones.

Este cliente se conecta al punto final, que genera eventos enviados por el servidor y devuelve una secuencia de objetos StockPrice que puede utilizar otro servicio. C贸mo hacerlo se mostrar谩 en los pr贸ximos videos de esta serie.

El c贸digo completo de 2 partes est谩 disponible en GitHub .

Parte 3. Aplicaci贸n JavaFX Spring Boot


La tercera demostraci贸n muestra c贸mo crear una aplicaci贸n JavaFX que se inicia y administra a trav茅s de Spring Boot para usar las funciones de Spring, como la Inversi贸n de control y la Inyecci贸n de dependencias, en nuestra aplicaci贸n JavaFX.

Esta entrada de blog tambi茅n contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Esta parte del tutorial incluye los siguientes pasos:

  • Configuraci贸n del m贸dulo
  • Cambio de la clase de aplicaci贸n Spring Boot
  • Edici贸n de la configuraci贸n de arranque de Spring
  • Crear una clase de aplicaci贸n JavaFX
  • Configurar la clase de aplicaci贸n Spring Boot
  • Publicaci贸n de eventos a trav茅s del contexto de la aplicaci贸n.
  • Crear contexto de aplicaci贸n
  • Cerrar el contexto de la aplicaci贸n
  • Escuchar eventos de aplicaciones

Despu茅s de completar los pasos 3 del tutorial, se crear谩 la ventana principal de la aplicaci贸n JavaFX (Etapa: consulte la parte 2 del Tutorial JavaFX ), que le permite configurar la interfaz de usuario. A continuaci贸n, puede ejecutar nuestra aplicaci贸n StockUIA y ver que se inicia con 茅xito como una aplicaci贸n Spring Boot. Tambi茅n lanza un proceso Java que mostrar铆a la interfaz de usuario si la cre谩ramos. Por el momento, se ha creado con 茅xito una aplicaci贸n JavaFX, que se inicia y administra con Spring y le permite utilizar las pr谩cticas funciones de cualquier aplicaci贸n Spring.

El c贸digo completo del tutorial de 3 partes est谩 disponible en GitHub.

Parte 4. Gr谩fico de l铆neas JavaFX


En este paso del tutorial, veremos c贸mo crear una aplicaci贸n JavaFX que muestre un diagrama de l铆neas. Esta aplicaci贸n utiliza Spring para funciones importantes como la inversi贸n de control.

Esta entrada de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Esta parte del tutorial incluye los siguientes pasos:

  • Crear una escena (Escena: consulte la parte 2 del Tutorial JavaFX )
  • Usando FXML
  • Crear un archivo FXML
  • Establecer encabezado de aplicaci贸n
  • Configuraci贸n del encabezado de la aplicaci贸n desde application.properties
  • Obteniendo controladores JavaFX de Spring
  • Crea un gr谩fico de l铆neas

Despu茅s de completar los pasos anteriores, la parte 4 del tutorial crear谩 una aplicaci贸n JavaFX. Despu茅s de iniciar la aplicaci贸n, deber铆amos ver el esquema del gr谩fico de l铆neas que se muestra en nuestra ventana, con n煤meros para el precio a lo largo del eje Y y el tiempo a lo largo del eje X.



Se cre贸 una aplicaci贸n JavaFX integrada en Spring Boot que usa FXML para declarar lo que se debe mostrar en la vista.

El c贸digo completo para esta parte del tutorial est谩 disponible en GitHub.

Parte 5. Configuraci贸n autom谩tica para beans compartidos


La Lecci贸n 5 muestra c贸mo usar Spring Beans de un m贸dulo en otro m贸dulo usando la autoconfiguraci贸n.

Esta entrada de blog tambi茅n contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

En la 煤ltima lecci贸n, se cre贸 una aplicaci贸n JavaFX Spring Boot que mostraba un diagrama de l铆nea vac铆o. En este video veremos c贸mo configurar la autoconfiguraci贸n para Spring Beans para que podamos usar los componentes de bean definidos en el m贸dulo stock-client en el m贸dulo stock-ui.

Esta parte del tutorial incluye los siguientes pasos:

  • Agregar una dependencia en otro m贸dulo
  • Crear un WebClientStockClient Bean
  • Activa la configuraci贸n autom谩tica

Esta es una parte bastante peque帽a del tutorial, pero nos permite crear m贸dulos que pueden ser reutilizados por varias aplicaciones Spring Boot. Ahora podemos usar el cliente en ChartController para conectarse al servicio de precios y comenzar a mostrar los precios en tiempo real en un gr谩fico de l铆neas.

El c贸digo completo de esta parte est谩 disponible en GitHub.

Parte 6. Visualizaci贸n de datos reactivos


Esta lecci贸n discute la conexi贸n de diagramas JavaFX a nuestro servicio Kotlin Spring Boot para mostrar los precios en tiempo real. Esta entrada de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

En la cuarta parte , se cre贸 la aplicaci贸n JavaFX Spring Boot, que muestra un diagrama de l铆nea vac铆o. La 煤ltima versi贸n ( quinta parte ) utiliz贸 WebClientStockClient para conectarse al servicio de precios. En esta parte, se obtuvo un gr谩fico de l铆neas que muestra los precios provenientes de nuestro servicio Kotlin Spring Boot en tiempo real.

Esta parte del tutorial incluye los siguientes pasos:

  • Configurar datos del gr谩fico
  • Suscr铆base a los datos de precios
  • Visualizaci贸n de datos de precios
  • Lanzamiento de la aplicaci贸n
  • Visualizaci贸n del nombre del personaje
  • Limpieza de c贸digo

Algunas l铆neas de c贸digo en esta parte del tutorial crearon una aplicaci贸n JavaFX que usa SpringClient para conectarse al servicio Spring Boot, se suscribe a un flujo de precios reactivo y dibuja los precios en un gr谩fico de l铆neas en tiempo real.

El c贸digo completo de esta parte est谩 disponible en GitHub.

Parte 7. Suscribirse a m煤ltiples suscriptores


En la parte anterior , nos suscribimos a un gr谩fico de l铆neas JavaFX para los precios de nuestro servicio Reactive Spring Boot y los mostramos en tiempo real.

En esta lecci贸n, se finalizar谩 un cronograma de actualizaci贸n en tiempo real para mostrar los precios de m谩s de una acci贸n, lo que requiere que m谩s de un consumidor se suscriba a nuestro flujo de precios reactivo.

En el blog encontrar谩 un video que muestra el proceso paso a paso y una descripci贸n del texto (adaptado de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Esta parte del tutorial incluye los siguientes pasos:

  • Nos damos cuenta de los precios de suscripci贸n
  • Transferencia de derechos a un suscriptor de precios
  • Agregar un segundo suscriptor
  • Limpieza de c贸digo
  • Refactorizaci贸n de bonificaci贸n (隆no en el video!)

Al final de esta parte del tutorial, crear谩 una aplicaci贸n JavaFX que se suscribe a m谩s de un precio de nuestro servicio Spring Boot y muestra cada conjunto de datos de precios en tiempo real en varias series en un gr谩fico de l铆neas.

El c贸digo completo de esta parte est谩 disponible en GitHub.

Parte 8. Servidor Kotlin RSocket


En esta lecci贸n , se agregar谩 un nuevo servicio interno a Kotlin, que env铆a los precios a trav茅s de RSocket, un protocolo para flujos reactivos. Esta entrada de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

En esta etapa de la serie de tutoriales, se cre贸 con 茅xito una aplicaci贸n integral que publica los precios del servicio Kotlin Spring Boot y los muestra en un gr谩fico de l铆neas JavaFX. Utiliza el protocolo HTTP para enviar eventos al servidor. Sin embargo, dado que esta es una aplicaci贸n reactiva, podemos elegir el protocolo que mejor se adapte a la transmisi贸n de datos.

En esta parte del tutorial, se crear谩 un servicio que produce datos de precios utilizando el protocolo RSocket.

Esta parte del tutorial incluye los siguientes pasos:

  • Crear un controlador RSocket
  • Realizamos servicio de precios
  • Portar c贸digo com煤n a PriceService
  • Reduce la duplicaci贸n de c贸digo
  • Refactorizaci贸n para reducir la caldera
  • Configuraci贸n de visualizaci贸n de mensajes
  • Configuraci贸n del servidor RSocket

Al final de esta parte del tutorial, el puerto 7000 lanzar谩 un servicio de precios, listo para conectar a un cliente para recibir precios de acciones a trav茅s de RSocket.

El c贸digo fuente completo de esta parte est谩 disponible en GitHub.

Parte 9. Cliente Java RSocket


En esta lecci贸n, agregaremos un cliente RSocket que puede comunicarse con el servidor RSocket que creamos en la 煤ltima lecci贸n .

Esta entrada de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Actualmente, tenemos una aplicaci贸n que funciona de principio a fin usando Spring WebClient . En la 煤ltima lecci贸n, presentamos el nuevo servidor RSocket, que actualmente est谩 funcionando, y en esta lecci贸n veremos c贸mo crear un cliente para conectarse a 茅l.

Esta parte del tutorial incluye los siguientes pasos:

  • Crea una prueba de integraci贸n
  • Creaci贸n de RSocket Stock Client
  • Presentaci贸n de la interfaz de StockClient
  • Implementaci贸n de conexi贸n RSocket
  • Creando RSocketRequester
  • Prueba de aprobaci贸n de integraci贸n
  • Prueba con StepVerifier
  • Agregar estrategias de reversi贸n y manejo de errores

Al final de esta parte del tutorial, tendremos un servidor RSocket que genera precios de acciones, y un cliente RSocket que puede conectarse y ver estos precios. En la pr贸xima lecci贸n, veremos c贸mo pasar de usar WebClientStockClient a nuestro nuevo RSocketStockClient.

El c贸digo fuente completo de esta parte est谩 disponible en GitHub.

Parte 10. Perfiles de resorte para cambiar clientes


La parte final del tutorial usa la configuraci贸n Spring Profiles para que la aplicaci贸n pueda determinar cu谩l de nuestros dos clientes (eventos enviados por el servidor a trav茅s de WebClient o RSocket) usar para conectarse a nuestro servicio de precios Kotlin Spring Boot.

Como de costumbre, esta publicaci贸n de blog contiene un video que muestra el proceso paso a paso y una gu铆a de texto (adaptada de la transcripci贸n del video) para aquellos que prefieren un formato escrito.

Para esta etapa de la serie de tutoriales, tenemos un cliente RSocket que nos permite conectarnos a nuestro servidor RSocket, queremos usar estas funciones desde nuestra aplicaci贸n JavaFX.

Esta parte del tutorial incluye los siguientes pasos:

  • Crear un bean RSocketStockClient
  • Elegir un frijol para usar
  • Selecci贸n activa de perfil
  • Registro para depuraci贸n
  • Obtener precios a trav茅s de RSocket

Al final de esta parte del tutorial, tendremos una aplicaci贸n completa de gr谩ficos lineales JavaFX que se suscribe al flujo de precios reactivo de la aplicaci贸n Kotlin Spring Boot. Adem谩s, la aplicaci贸n se puede configurar para recibir estos precios a trav茅s de eventos enviados por el servidor o mediante el nuevo protocolo RSocket.

El c贸digo completo est谩 disponible en GitHub:

Proyecto de cliente (stock-client y stock-ui-modules).
Proyecto de servidor (aplicaci贸n Kotlin Spring Boot)

Lectura adicional


Totalmente reactivo: Spring, Kotlin y JavaFX jugando juntos [Enlaces]
Tutorial de microservicio de Kotlin con Spring Boot
Programaci贸n reactiva de primavera en Java

Source: https://habr.com/ru/post/481950/


All Articles