🚀 Spring gRPC: ¡Promovido oficialmente al portafolio Spring!

Carlos ExpositoCarlos Exposito
3 min read

Buenas noticias para los amantes de las microarquitecturas modernas: Spring gRPC ha pasado de ser un proyecto experimental a ser parte oficial del portafolio de Spring.
Y sí, eso significa que ahora es una opción más estable, más soportada y más integrada para quienes quieran usar gRPC con Spring Boot. ¡Vamos a verlo!


🆙 ¿Qué significa esta promoción?

Spring gRPC ahora tiene:

  • Soporte oficial por parte del equipo de Spring.
  • Mayor integración con Spring Boot.
  • Ciclo de vida de soporte alineado con Spring Boot (especialmente a partir de la versión 1.0.0).
  • ¡Y sí, ya puedes encontrar la versión 0.8.0 en Maven Central!

⚡ ¿Qué trae de nuevo la versión 0.8.0?

Aunque no es una versión con grandes features, sí tiene algunos cambios importantes:

  • Migración a protobuf-java v4.
  • Dependencias actualizadas.
  • Disponible en Spring Initializr ✅

Puedes empezar fácilmente creando un proyecto en start.spring.io y marcando la opción gRPC.


🧙‍♂️ Magia con @ImportGrpcClients

Una de las funcionalidades más potentes es que ahora puedes generar tus gRPC stubs automáticamente como beans con solo una anotación:

@SpringBootApplication
@ImportGrpcClients("localhost:9090")
public class MiAplicacionGrpc {
    public static void main(String[] args) {
        SpringApplication.run(MiAplicacionGrpc.class, args);
    }
}

Esto escanea tu classpath en busca de stubs generados (como AbstractBlockingStub) y los registra como beans listos para usar.


😎 ¿Y si no quiero usar la anotación?

También puedes definirlo mediante propiedades de configuración:

spring.grpc.client.default-channel.address=localhost:9090

Y luego simplemente hacer autowire del stub:

@Component
public class ServicioRemoto {
    public ServicioRemoto(SimpleBlockingStub stub) {
        // Llamada a métodos RPC
    }
}

🌮 Ejemplo simpático: tu taquería digital con Spring gRPC

Supongamos que estás creando una app para pedir tacos. Tienes un microservicio TacoService que ofrece tacos deliciosos a través de gRPC. Así sería un stub generado desde tu .proto:

public class TacoServiceGrpc {
    public static class TacoServiceBlockingStub extends AbstractBlockingStub<TacoServiceBlockingStub> {
        public TacoResponse pedirTaco(TacoRequest request) {
            // gRPC llamaría al servidor real aquí
        }
    }
}

Con Spring gRPC, podrías inyectar el cliente así de fácil:

@Component
public class TacoCliente {

    private final TacoServiceGrpc.TacoServiceBlockingStub stub;

    public TacoCliente(TacoServiceGrpc.TacoServiceBlockingStub stub) {
        this.stub = stub;
    }

    public void pedirCarnitas() {
        TacoRequest request = TacoRequest.newBuilder().setTipo("carnitas").build();
        TacoResponse response = stub.pedirTaco(request);
        System.out.println("🌮 Taco recibido: " + response.getDescripcion());
    }
}

Y en tu application.properties:

spring.grpc.client.default-channel.address=localhost:9090

¡Listo! Tienes una taquería digital usando gRPC con apenas unas líneas de configuración.


🛠️ ¿Necesitas más control?

Usa @ImportGrpcClients con atributos personalizados:

  • Establece tipos de stub específicos
  • Escanea paquetes específicos
  • Usa tu propio StubFactory (¡Spring gRPC ya incluye varios!)

🔜 ¿Qué viene en la 0.9.0?

El equipo está trabajando en:

  • Cambios internos en @ImportGrpcClients (si tienes un StubFactory personalizado, ojo con esto).
  • Probar el nuevo proceso de publicación en Maven Central.

🎯 Nada debería romperse, pero es una señal clara de que el proyecto sigue avanzando y madurando.


✅ Conclusión

Spring gRPC se ha ganado un lugar oficial en la familia Spring, y eso significa estabilidad, soporte y futuro.

Si estabas buscando una forma moderna de comunicar tus servicios con gRPC sin salir del mundo Spring, esta es la señal que esperabas.
¡Hora de explorarlo! 🚀

0
Subscribe to my newsletter

Read articles from Carlos Exposito directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Carlos Exposito
Carlos Exposito